Hi all,
I am quite new to WPF, MVVM and all that stuff and I got stuck at validating my data.
I have the following Model, ViewModel und xaml-Snippet, with Validation in the Model:
public class Model
{
private string _someString;
public string SomeString
{
get{ return _someString;}
set
{
_someString = value;}
}
private bool _isValid;
public bool IsValid
{
get {return _isValid;}
set {_isValid = value;}
}
public string Validate(string propertyName)
{
switch(propertyName):
case "SomeString":
if(SomeString.Length < 4)
{
IsValid = false;
return "SomeString too short!";
}
}
//...
}
public class ViewModel : IDataErrorInfo, INotifyPropertyChanged
{
public string SomeString
{
get { return _model.SomeString;}
set
{
_model.SomeString = value;
NotifyPropertyChanged("IsValid");
}
}
public bool IsValid
{
get { return _model.IsValid; }
set {_model.IsValid = value; }
}
public string this[string propertyName]
{
get {return _model.Validate(propertyName);}
}
}<TextBox Text="{Binding SomeString, Mode=TwoWay, ValidatesOnDataErrors = True}"/><Button Content="Save" IsEnabled="{Binding IsValid}"/>I already tried diffrent variations:
1. Notification in the MODEL => No Notification to the VIEWMODEL
2. Notification in the ViewModel-Setter of SomeString (PropertyChanged("IsValid")) => IsValid is Notified, than Validation runs. Thus IsValid changes but VM still is not notified...
Am I getting something wrong? Due to a lot of threads it should work like that:
Model Prop Changes --> Notifies VM via INotifyPropertyChanged --> Notifies View
I hope I could describe my problem in a suitable way.
Thanks Kat