在运行时更改模型实例

本文关键字:模型 实例 运行时 | 更新日期: 2023-09-27 18:00:31

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

ViewModel类中的somewheere:

//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");
}

问题是,我必须做什么才能通知我的视图绑定内容已更改?

<Setter Property="Text" Value="{Binding MyViewModel.TextProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

*ViewDefault。模型和视图。型号有一种类型

在运行时更改模型实例

在我看来,ViewModelViewModel链接,因此如果必须更改Model,我将创建一个新的ViewModel并将其附加到视图的DataContext。

视图应该由某人(最好是工厂)创建,创建视图的人也应该创建数据上下文并附加它进行

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