从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/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>