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

Den*_*gan 13 c# wpf datacontext

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

Sim*_*ens 18

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

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


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