如何在祖先的数据上下文中绑定属性?

时间:2012-05-03 21:17:41

标签: wpf binding itemscontrol relativesource

我有一个ItemsControl定义如下所示。基本上,我有一个编辑器列表(EditorList),我想要每个的超链接。但是,我的open命令(OpenEditorCommand)属性与编辑器列表处于同一级别。当上下文设置为列表中的项目时,如何引用该属性。我尝试过使用RelativeSource方法,但对我来说理解起来太复杂了。我是在正确的轨道上吗?

<ItemsControl ItemsSource="{Binding EditorList}">
   <ItemsControl.ItemTemplate>
      <DataTemplate>
         <TextBlock Margin="2,6" HorizontalAlignment="Center">
            <Hyperlink Command="{Binding RelativeSource={RelativeSource AncestorType=ItemsControl, AncestorLevel=2, Mode=FindAncestor}, Path=OpenEditorCommand}" CommandParameter="{Binding Name}">
               <StackPanel>
                  <Image Source="{Binding Image}" Width=32/>
                  <TextBlock Text="{Binding Path=Name}"/>
               </StackPanel>
            </Hyperlink>
         </TextBlock>
      </DataTemplate>
   </ItemsControl.ItemTemplate>
</ItemsControl>

1 个答案:

答案 0 :(得分:4)

在元素树中存在搜索类型可能有多个祖先的情况下,您只需要设置AncestorLevel。默认值为1表示找到最接近的值。

但您需要在Path中指定要绑定到OpenEditorCommand的{​​{1}}上的DataContext

ItemsControl