我在某处读到在用户控件的构造函数中设置DataContext = this
是不好的做法(虽然无法找到)。为什么这是不好的做法?有什么替代方案?
答案 0 :(得分:18)
通常,当有人使用您的控件时,他们会想要将其数据上下文设置为他们自己的视图模型类,并将控件上的属性绑定到他们的视图模型。
如果你开始在控件内部乱搞数据上下文,并依赖它被设置为'this',你要么阻止它们的绑定工作,要么你的控件将无法按预期工作,因为你依赖它没有被改变。
假设您有一个用户控件,其上有一些子控件。你可以做的是将子控件上的DataContext设置为你的用户控件类(或任何你想要的)。这将允许您将这些子控件绑定到用户控件的属性,同时仍允许控件的任何用户将其数据上下文设置为其视图模型并绑定到属性。