带有DataContext对象的WPF DataContext问题
我用datacontext创建了一个简单的示例。请从这里获取示例:我知道DataContext的用法是带有DataContext对象的WPF DataContext问题,wpf,Wpf,我用datacontext创建了一个简单的示例。请从这里获取示例:我知道DataContext的用法是 如果用户更改了UI中的任何内容,则应在后端datacontext类中进行更新,而无需进行任何额外工作 若我们在后端datacontext对象中做了任何更改,那个么它应该在UI中更新,而不需要任何额外的工作 在我的样本中 如果我单击“单击”按钮,文本框值将更新。-通过 如果我单击“更新”按钮,文本框值将更新。-通过 如果我单击“清除”按钮,文本框值不会更新。-失败 单击“清除”按钮后,如果单击“
注意:在我的示例中,我对一些行进行了注释。在这方面,我每次都将datacontext强制转换为模型类并对其进行更改。工作正常。我是否需要使用该方法在运行时更新值。UI中的更改值将不会在UI.< /P>> P>中更新。问题是,考虑变量Dc与DATACONTEX链接,但情况并非如此。要修复代码,只需在更改“dc”变量后再次设置DataContext
private void Button_Click_1(object sender, RoutedEventArgs e)
{
dc = new Journal();
myPanel.DataContext = dc;
//myPanel.DataContext = new Journal();
}
问题是,你认为变量“dc”链接到DATACONTHOST,但情况并非如此。要修复代码,只需在更改“dc”变量后再次设置DataContext
private void Button_Click_1(object sender, RoutedEventArgs e)
{
dc = new Journal();
myPanel.DataContext = dc;
//myPanel.DataContext = new Journal();
}
谢谢你的回答。这意味着我们需要在使用“new”关键字重新初始化对象时再次设置datacontext。对吧?对。也许更好的方法是评估为什么使用“new”关键字,而不是在viewmodel中创建“Reset”方法,并使用该方法重置对象。这样就不需要使用“new”。顺便说一句,如果我的回答解决了您描述的问题,请将其标记为解决方案,以便其他读者在遇到相同问题时可以使用。感谢您的回答。我只想补充一点,完全替换正在使用的数据上下文通常是个坏主意。它通常是可以工作的,但是在幕后有大量的开销,所有绑定都需要在模型和UI之间重新协商。正如@LupuSilviu所说,您最好使用viewmodel中的方法在内部重置数据,而不是构建一个全新的viewmodel。谢谢您的回答。这意味着我们需要在使用“new”关键字重新初始化对象时再次设置datacontext。对吧?对。也许更好的方法是评估为什么使用“new”关键字,而不是在viewmodel中创建“Reset”方法,并使用该方法重置对象。这样就不需要使用“new”。顺便说一句,如果我的回答解决了您描述的问题,请将其标记为解决方案,以便其他读者在遇到相同问题时可以使用。感谢您的回答。我只想补充一点,完全替换正在使用的数据上下文通常是个坏主意。它通常是可以工作的,但是在幕后有大量的开销,所有绑定都需要在模型和UI之间重新协商。正如@LupuSilviu所说,最好在viewmodel中使用一种方法在内部重置数据,而不是构建一个全新的viewmodel。