问题描述
当前,我的情况是我有一个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 (将#修改为@)