La mise en œuvre de textbox événement lostfocus dans MVVM

Je veux accomplir une tâche simple.
Nécessité de mettre en œuvre zone de texte lostfocus, Que l'utilisateur met les données, dès qu'un champ est rempli et il arrive à la suivante, il faut tirer une fonction de validation sur le champ précédent.
Aussi, je suis en utilisant le pattern MVVM.

J'ai donc cette classe

public class data : INotifyPropertyChanged
{

    public string name;
    public string Name
    {
        get
        {
            return name;
        }

        set
        {
            name = value;
            OnPropertyChanged("Name");
        }
    }
    public string firstname;
    public string FirstName
    {
        get
        {
            return firstname;
        }

        set
        {
            firstname = value;
            OnPropertyChanged("FirstName");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void OnPropertyChanged(string propertyName)
    {
        if (this.PropertyChanged != null)
        {
            //Raise the PropertyChanged event
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
} 

Dans le Viewmodel j'ai eu ce

data1 = new data() { name = "Eddie Vedder", firstname = "Eddie" }; //this line in initialization 
public data _data1;
public data data1
{
    get { return _data1; }
    set 
    {

        _data1 = value;
        ValidateThis();
        NotifyPropertyChanged(new PropertyChangedEventArgs("data1"));
    }
}

En Xaml:

<StackPanel Orientation="Horizontal" >
    <Label Width="90" Content="Name" Height="28" HorizontalAlignment="Left" Name="lblName" VerticalAlignment="Top" />
    <TextBox Text="{Binding Path=data1.name, UpdateSourceTrigger=LostFocus, Mode=TwoWay}"   MaxLength="40" TabIndex="2" Height="25" Margin="0,3,0,0" HorizontalAlignment="Left" Name="txtName" VerticalAlignment="Top" Width="200" />
</StackPanel>
<StackPanel Orientation="Horizontal" >
    <Label Width="90" Content="First Name" Height="28" HorizontalAlignment="Left" Name="lblFirstName" VerticalAlignment="Top" />
    <TextBox Text="{Binding  Path=data1.firstname, UpdateSourceTrigger=LostFocus, Mode=TwoWay}" MaxLength="40" TabIndex="3" Name="txtFirstName" Height="25" Margin="0,3,0,0" VerticalAlignment="Top" Width="200" >
    </TextBox>
</StackPanel>

Ma liaison est-il des chaussures le nom par défaut Eddie Vedder quand je l'exécuter.
Quand je debug, il ne veut pas entrer dans la classe des données.

  • Aussi est-il une raison particulière pour laquelle vous ne voulez pas faire de la "régulière" façon c'est à dire à l'aide d'attributs de Système.ComponentModel.DataAnnotations dans votre modèle de vue?
  • pourquoi pas: ValidatesOnDataErrors=true, UpdateSourceTrigger=LostFocus dans votre xaml de liaison et IDataErrorInfo dans votre VM?
  • désolé pour la réponse tardive, les gars, venez de télécharger ce que j'ai fait.
  • Hey Mark, je veux montrer les erreurs personnalisées dans une autre grille.
InformationsquelleAutor nostafict | 2014-10-14