FrameworkElement的DataContext属性不继承元素树

Eli*_*eth 8 wpf datacontext inheritance frameworkelement

你好WPF专业人士至少我希望你们有些人读到这个!

DataContext是FrameworkElement(所有WPF控件的基类)上的属性,并作为DependencyProperty实现.这意味着逻辑树中的所有后代元素共享相同的DataContext.

所以ContentControl应该用它的后代元素做对吗?

我的情况并非如此,我想知道这种不当行为的原因是什么?!

你更了解它,请阅读这个线程(不要在这里复制一切)麻烦开始...:

WPF:找不到触发器目标'cc'.目标必须出现在任何Setters,Triggers之前

并说,它在很短的话:在ContentControl中内我的DataTemplates确实有死的DataContext,这意味着没有什么绑定到它,究竟是不可能的...

ContentControl中的每个元素都在DataContext属性中设置了NOTHING ???

Tho*_*que 21

DataContext是FrameworkElement(所有WPF控件的基类)上的属性,并作为DependencyProperty实现.这意味着逻辑树中的所有后代元素共享相同的DataContext.

事实上,它是一个依赖属性并不意味着继承...这是真的DataContext,但仅仅因为依赖属性FrameworkPropertyMetadataOptions.Inherits在其元数据中有标志.

所以ContentControl应该用它的后代元素做对吗?

ContentControl有点特别:DataContext它的后代(从它构建的可视树DataTemplate)实际上是它ContentContentControl.因此,如果您ContentControl没有内容,则DataContext内部为空.


小智 13

这对我有用:

<ContentControl ContentTemplate="{StaticResource NotesTemplate}"
                Content="{Binding}"
                DataContext="{Binding HeightField}"/>
Run Code Online (Sandbox Code Playgroud)

没有Content="{Binding}",DataContext为NULL