代码之家  ›  专栏  ›  技术社区  ›  Jeremiah

在C#中,如何在ViewModel中的视图上设置DataContext?

  •  3
  • Jeremiah  · 技术社区  · 15 年前

    我试着围绕MVVM来思考。我了解很多,但我很难理解其中一个方面: 设置数据上下文 .

    我错过了什么?

    试图避免这种情况:

    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;
        }
    }
    
    2 回复  |  直到 15 年前
        1
  •  7
  •   Cameron MacFarland    15 年前

    因此,在您的情况下,在ViewModel中放入代码来创建视图并不是最好的方法。

    乔希·史密斯的 article 在MVVM上有一个 section 将视图应用于ViewModel时。他建议使用WPF的DataTemplates在XAML中选择视图。

        2
  •  0
  •   Sergey Aldoukhov    15 年前

    此外,我支持Cameron的观点——nor视图或ModelView应该处理分配DataContext的问题。它可以用不同的方式(DataTemplate、依赖项注入、特殊构建器类、普通代码)完成,但通常在应用程序级别进行。