WPF用户控件中“DataContext = this”有什么问题?

我在某处读到在用户控件的构造函数中设置DataContext = this是不好的做法(虽然无法找到)。 为什么这是不好的做法? 有什么选择?

通常,当有人使用您的控件时,他们会想要将其数据上下文设置为他们自己的视图模型类,并将控件上的属性绑定到他们的视图模型。

如果你开始在控件内部乱搞数据上下文,并依赖它设置为’this’,你要么阻止它们的绑定工作,要么你的控件不会按预期工作,因为你依赖它不是改变。


假设您有一个用户控件,其上有一些子控件。 您可以做的是将子控件上的DataContext设置为您的用户控件类(或任何您想要的)。 这将允许您将这些子控件绑定到用户控件的属性,同时仍允许控件的任何用户将其数据上下文设置为其视图模型并绑定到属性。