WPF用户控件中的"DataContext = this"有什么问题?

13

我在某个地方读到,在用户控件的构造函数中设置 DataContext = this 是不好的做法(但我找不到来源)。为什么这样做是不好的?有什么替代方法吗?

1个回答

18
一般来说,当有人使用您的控件时,他们会想将其数据上下文设置为他们自己的视图模型类,并绑定您的控件的属性到他们的视图模型。如果您在控件内部开始操纵数据上下文,并依赖于它被设置为“this”,那么您要么会阻止它们的绑定工作,要么您的控件将无法按预期工作,因为您依赖于它不被更改。
假设您有一个用户控件,其中包含大量子控件。相反,您可以将子控件上的DataContext设置为您的UserControl类(或任何您想要的内容)。这将允许您将这些子控件绑定到您的用户控件的属性,同时仍然允许您控件的任何用户将其数据上下文设置为他们的视图模型并绑定到属性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接