如何解决MVVM如何在视图中获取ViewModel数据上下文
当前,我的情况是我有一个MainViewModel,它像这样实例化MainTradingViewModel ...
public partial class MainViewModel
{
public MainTradingViewModel MainTradingViewModel = null;
public MainViewModel()
{
MainTradingViewModel = new MainTradingViewModel();
}
}
这就是我在MainWindow.xaml中创建MainTrading窗口的方式
<view:MainTrading DataContext="{Binding MainTradingViewModel}" />
现在的问题是我的MainTradingView类没有诸如...的数据上下文。
public partial class MainTrading : UserControl
{
private MainTradingViewModel vm = null;
public MainTrading()
{
InitializeComponent();
// I cant do this,since already instantiated in MainViewModel class
//DataContext = new MainTradingViewModel();
//DataContext = ????? so????
}
}
从这里开始,我如何分配Datacontext以知道它是MainTradingViewModel? 因为MainTradingViewModel已经从另一个类实例化,所以我无法实例化一个新的类并分配给Datacontext,也无法更改代码作为参数传递。
我目前有一个解决方法,就是在类MainTrading中创建一个方法...
public partial class MainTrading : UserControl
{
private MainTradingViewModel vm = null;
public MainTrading()
{
InitializeComponent();
SetDataContext();
}
private void SetDataContext()
{
if (vm != null) return;
vm = DataContext as MainTradingViewModel;
}
public void SomeMethod()
{
// I have to call this on every new method in this class....
SetDataContext();
// ...
vm.CallMyViewModelMethod();
}
}
但是这种解决方法的问题是我必须在每个方法上调用SetDataContext(),因为似乎有一个竞争条件DataContext可以设置为null,所以我必须继续检查/设置它。 设置已经实例化视点模型的DataContext的最佳或正确方法是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。