GridView HeaderTemplate丢失了DataContext

时间:2011-03-08 23:39:04

标签: wpf gridview

我有一个带有HeaderTemplate的gridview,我在标题上放了一个按钮,并且附加了一个命令,我的ViewModel永远不会被调用。 如何追溯我的ViewModel,好像它“丢失”了。

任何想法?

2 个答案:

答案 0 :(得分:3)

使用:

RelativeSource={RelativeSource FindAncestor,  AncestorType={x:Type ListView}}}

会将我带回DataContext

答案 1 :(得分:0)

Column HeaderTemplate是DataGrid的一个生成控件,没有对DataGrid的DataContext的直接VisualTree访问,所以你必须添加RelativeSource AncestorType并通过DataContext显式引用该属性

"{Binding DataContext.AllSelected, RelativeSource={RelativeSource AncestorType=Window}}" />

或者您也可以将此内容写入模板中的top元素

 DataContext="{Binding DataContext, RelativeSource={RelativeSource AncestorType=DataGrid}}"