修改控件的datacontext是一个好习惯吗?

时间:2015-07-16 13:32:53

标签: c# wpf xaml datacontext

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

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

我在修改datacontext时遇到的问题是,如果在C#中进行datacontext修改而不是在xaml中,那么知道这个控件可以在xaml中绑定是多么令人困惑。

修改

让我重新阐述这个问题,是否有任何技术原因我应该或不应该修改我控制的数据文字?

1 个答案:

答案 0 :(得分:1)

我想,如果您有明确定义的可视化树,则RelativeSource绑定是实际的,因此您可以预测Control或UserControl的放置位置。

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

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

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