在运行时更改模型实例?

时间:2015-06-30 09:42:18

标签: c# wpf

在运行时更改模型实例是否正确?我的控件绑定到第一个实例,但在程序执行期间,我想将它们绑定到另一个实例。

在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有一种类型

1 个答案:

答案 0 :(得分:0)

在我的观点中,ViewModelViewModel相关联,因此,如果我必须更改Model,我会创建一个新的ViewModel并将其附加到View的DataContext。

视图应该由某人(最好是工厂)创建,创建视图的人应该创建datacontext并附加它

View view = new View();
view.DataContext = new ViewModel();