控件是否有任何理由不从其父级继承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}}}"
但这个丑陋的黑客行为不应该是必要的。