控制不从父级继承datacontext?

时间:2015-11-17 13:15:51

标签: c# wpf xaml

控件是否有任何理由不从其父级继承datacontext?

我继承了一段相当丑陋的WPF代码,我一直负责更新。我想将一些文本块从硬编码字符串更改为数据绑定值。

我得到的基本布局是

<Grid>
    <TextBlock Text="The Caption" />
</Grid>

我已改为

<Grid>
    <TextBlock Text="{Binding BoundCaption}" />
</Grid>

但是,当我运行应用程序时,文本块是空白的。

使用WPF Snoop我可以看到网格具有预期的datacontext(视图的viewmodel),但textblock的datacontext为null。如果它有任何区别,网格实际上在C1TabItem头(组件一库)中使用,所以可视树是大量的边框,内容演示者,布局圆场等。据我所知,没有定义样式文本块的应用程序。

我知道我可以通过使用

直接设置textblock的datacontext来解决这个问题。
DataContext="{Binding Path=DataContext, RelativeSource={RelativeSource AncestorType={x:Type Grid}}}"

但这个丑陋的黑客行为不应该是必要的。

0 个答案:

没有答案