代码之家  ›  专栏  ›  技术社区  ›  Deniz Dogan

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

  •  13
  • Deniz Dogan  · 技术社区  · 15 年前

    我在某个地方看到过那个场景 DataContext = this 在用户控件的构造函数中是一种糟糕的做法(但找不到在哪里)。为什么这样做不好?备选方案是什么?

    1 回复  |  直到 13 年前
        1
  •  18
  •   Simon P Stevens    15 年前

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

    如果您开始在控件内部处理数据上下文,并且依赖于它被设置为“this”,那么您将阻止它们的绑定工作,或者您的控件将无法按预期工作,因为您依赖它而不被更改。


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