从DataTemplate中绑定到ItemsControl的DataContext

时间:2014-06-09 16:13:25

标签: c# xaml binding datatemplate

我使用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?

1 个答案:

答案 0 :(得分:0)

如果资源字典中有 DataTemplate / ItemTemplate ,您可能希望使用{RelativeSource FindAncestor}绑定模式绑定到父<的属性< EM> ItemsControl的:

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