从DataTemplate中绑定ItemsControl的DataContext

本文关键字:DataContext ItemsControl 绑定 DataTemplate | 更新日期: 2023-09-27 18:07:52

我使用ItemsControl,如下所示:

<UserControl.Resources>
  <DataTemplate x:Key="HomeItemTemplate">
    <UserControl Command="{Binding DataContext.MyCommand}"/>
  </DataTemplate>
</UserControl.Resources>
<ItemsControl ItemTemplate="{StaticResource HomeItemTemplate}" />

现在,放置ItemsControl的视图有一个DataContext。在那个DataContext中,我有我的MyCommand。我必须在多个地方使用这个ItemsControl,所以直接引用DataTemplate中的ElementName是我不想做的事情。

我试过TemplatedParent和RelativeSource,不同的东西,我不知道我到底应该做什么。我该如何写这个,这样我的UserControl可以绑定到ItemsControl的DataContext ?

从DataTemplate中绑定ItemsControl的DataContext

如果在资源字典中有DataTemplate/ItemTemplate,您可能希望使用{RelativeSource FindAncestor}绑定模式来绑定父元素ItemsControl:

的属性。
<UserControl.Resources>
  <DataTemplate x:Key="HomeItemTemplate">
    <UserControl Command="{Binding DataContext.MyCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}}}"/>
  </DataTemplate>
</UserControl.Resources>