我正在尝试围绕 MVVM 进行思考。我理解了很多,但我很难掌握一个方面:设置 DataContext。
我想显示带有特定对象的 View 。用户无法决定什么是可见的,因此我需要在代码中创建 View 。然后,我想将 View 的 DataContext 设置为一个对象(用于绑定(bind))。我试图不为此将代码放在 View 中,但 View.LayoutRoot.DataContext 不是公开的。
我错过了什么?
试图避免这种情况:
public class View
{
public View(object dataContext)
{
InitializeComponent();
LayoutRoot.DataContext = dataContext;
}
}
像这样:
public class ViewModel
{
...
public UIElement GetView()
{
UIElement *element = new View();
element.LayoutRoot.DataContext = element;
return element;
}
}
最佳答案
不要忘记 View 应该知道 ViewModel,而不是相反。
因此,在您的情况下,将代码放入 ViewModel 中以创建 View 并不是最好的方法。
约什·史密斯的 article在 MVVM 上有一个 section将 View 应用于 ViewModel。他建议使用 WPF 的数据模板在 XAML 中选择您的 View 。
关于c# - 在 C# 中,如何在 ViewModel 的 View 上设置 DataContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1044365/