在运行时更改模型实例是否正确?我的控件绑定到第一个实例,但在程序执行期间,我想将它们绑定到另一个实例。
在ViewModel类中的一些:
//ViewDefault - already initialized
// View - will be ready later
public string TextProperty
{
get
{
if (View != null)
{
return View.Model.text;
} return ViewDefault.Model.text;
}
set
{
if(View != null)
{
//.. logic with View.Model.text
}else{
// logic with ViewDefault.Model.text
}
RaiseOnPropertyChanged("TextProperty");
}
问题是 - 我必须做些什么来通知我的View,绑定内容已更改?
<Setter Property="Text" Value="{Binding MyViewModel.TextProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
* ViewDefault.Model和View.Model有一种类型
答案 0 :(得分:0)
在我的观点中,ViewModel
将View
与Model
相关联,因此,如果我必须更改Model
,我会创建一个新的ViewModel
并将其附加到View的DataContext。
视图应该由某人(最好是工厂)创建,创建视图的人应该创建datacontext并附加它
View view = new View();
view.DataContext = new ViewModel();