13
我读的地方设置DataContext = this
在用户控件的构造函数是不好的做法(虽然找不到)。为什么这是不好的做法?什么是替代方案?WPF用户控件中的“DataContext = this”有什么问题?
我读的地方设置DataContext = this
在用户控件的构造函数是不好的做法(虽然找不到)。为什么这是不好的做法?什么是替代方案?WPF用户控件中的“DataContext = this”有什么问题?
一般来说,当有人使用你的控件时,他们会想要将其数据上下文设置为他们自己的视图模型类,并将控件上的属性绑定到他们的视图模型上。
如果您开始在控件内部混淆数据上下文,并依赖它设置为'this',那么要么阻止其绑定工作,要么控件无法按预期工作,因为您依赖在它不被改变。
假设你有一个用户控件,它在子控件上有一堆。你可以做的是将子控件的DataContext设置为你的用户控件类(或任何你想要的)。这将允许您将这些子控件绑定到用户控件的属性,同时仍允许控件的任何用户将其数据上下文设置为其视图模型并绑定到属性。
谢谢,但有什么替代? –
@blahblah:我用另一种方式更新了我的答案。 –