WPF绑定RelativeSource问题

时间:2011-01-26 16:15:53

标签: .net wpf xaml mvvm

我正在使用FindAncestor和AncestorLevel = 3来访问应该具有viewModel relay命令的顶级标记,但它不起作用。如果我做错了或者调试这种情况的方法有任何建议吗?

<DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding name}" Cursor="Hand"
                                           Foreground="Blue" TextDecorations="Underline">
                                    <i:Interaction.Triggers>
                                        <i:EventTrigger EventName="MouseDown">
                                            <cmd:EventToCommand Command="{Binding NameClickCommand, RelativeSource={RelativeSource FindAncestor, AncestorType=Grid, AncestorLevel=3}}" 
                                                                MustToggleIsEnabled="True" PassEventArgsToCommand="True"/>
                                        </i:EventTrigger>
                                    </i:Interaction.Triggers>
                                </TextBlock>
                            </DataTemplate>
  </DataGridTemplateColumn.CellTemplate>

2 个答案:

答案 0 :(得分:3)

看起来您正在将Command绑定到Grid上名为NameClickCommand的属性。网格没有此属性,因此请尝试将其更改为

Command="{Binding Path=DataContext.NameClickCommand...

如果NameClickCommand位于Grid的DataContext中

答案 1 :(得分:1)

您正在寻找层次结构中的第3个Grid - 这就是您想要的吗?

请注意,Grid不包含DataGrid