我有绑定到一个ViewModelViewModel中的MVVM属性?
DataContext="{Binding MyViewModel, Source={StaticResource Locator}}">
文本框,...被绑定到propertys IN的视图模型视图:
<TextBox Text="{Binding MyValue, Mode=TwoWay}"/>
<TextBlock Text="{Binding DisplayValue}"/>
属性,视图模型:
public MyViewModel()
{
DisplayValue = "0€";
MyValue = "0";
}
private string _myvalue;
public string MyValue
{
get
{
return _myvalue;
}
set
{
_myvalue = value;
ChangeValue();
RaisePropertyChanged(() => MyValue);
}
}
private string _displayvalue;
public string DisplayValue
{
get
{
return _displayvalue;
}
set
{
_displayvalue = value;
RaisePropertyChanged(() => DisplayValue);
}
}
private void ChangeValue()
{
//do something here and change the values of the property, e.g.:
DisplayValue = MyValue + "€";
}
这只是一个剪辑。我通常在VIEWMODEL里有50个属性,所有的方法也都在ViewModel中(意思是RelayCommands和方法,这些方法将在约50%属性的setter中被调用)。如您所见,我没有使用任何模型。这是使用MVVM的正常方式,还是应该创建一个新类并将所有属性/方法放入新类(Model)中?但是,我该如何将视图中的元素与Model,当视图DataContext绑定到ViewModel时?
编辑:说清楚。 我有一个文本框,文本框绑定到ViewModel中的一个属性。这是使用MVVM的正确方法吗?我是否应该仅在有List(例如ComboBox)时使用模型类,或者当我有几个TextBox(这会在我的眼睛中有点愚蠢和不必要)?
好吧,这可能是一个愚蠢的评论,但你有没有测试过这段代码? 从我可以读,当你设置myvalue的,你提高PropertyChanged事件,然后调用给ChangeValue()方法,该方法将设置myvalue的属性,这将提高PropertyChanged事件,这将调用ChangeValue()方法,将设置MyValue属性...等等。 除非MyValue + =“€”不使用Setter,但我严重怀疑这一点。 似乎是一个很好的旧的无限循环/记忆leack。但同样,我没有测试它自己,所以我可能是错的;) – Miiite
是的,你是对的...愚蠢的例子,要去改变(编辑) – Rudi