修改控件的数据上下文是一种好做法吗?

本文关键字:一种 控件 数据 上下文 修改 | 更新日期: 2023-09-27 18:03:06

如果我正在创建一个新的控件,我需要访问它之外的东西,修改数据上下文是一个好的做法,还是我应该使用这样的相对数据绑定:

{Binding Path=PathToProperty, 
         RelativeSource={RelativeSource AncestorType={x:Type typeOfAncestor}}}

我看到修改数据上下文的问题是,当数据上下文修改发生在c#中而不是在xaml中时,知道这个控件可以绑定到xaml中的内容会让人感到困惑。

编辑

让我重新表述这个问题,是否有技术上的原因导致我应该或不应该修改控件的数据上下文?

修改控件的数据上下文是一种好做法吗?

我想,RelativeSource绑定是实际的,如果你有明确定义的可视化树,所以你可以预测你的Control或UserControl将被放置在哪里。

此外,RelativeSource主要用于设置定义控件面的控件属性,但不用于在控件中显示业务信息。

为了显示业务信息,MVVM架构允许不同的datacontext用于不同的控件。例如,您的应用程序可以包含有关客户、销售和交易的信息,因此您将至少有三个datacontext。如果你想编辑客户信息-你将有另一个DataContext的新窗口或UserControl。

您可以为整个应用程序使用一个DataContext,但是这样的DataContext将不灵活,并且很难扩展它(当然,这样的DataContext的复杂性取决于应用程序的复杂性)