Jas*_*son 4 wpf properties datatemplate .net-3.5
场景:我有一个ListBox,ListBoxItems有一个DataTemplate.我想要做的是在DataTemplate中放置一个ContextMenu.问题是我希望这个ContextMenu ItemsSource根据窗口中的某些属性而不同.我最初的想法是,我可以将ItemsSource绑定到窗口中的Property,并返回ItemsSource; 但是,我似乎无法正确绑定此属性.我相信这是因为我在DataTemplate中,因此DataContext(我相信这是正确的词)是ListBoxItem而不是窗口.我怎样才能将DataTemplate中的ContextMenu绑定到DataTemplate之外的Property.
您可以使用RelativeSource FindAncestor语法从窗口获取DataContext
<DataTemplate>
<TextBlock Text="{Binding MyInfo}">
<TextBlock.ContextMenu>
<Menu ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.MyContextMenuItems}"/>
</TextBlock.ContextMenu>
</TextBlock>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
不完全确定,但绑定是正确的...如果您的DataContext在另一个对象类型上,您只需要更改AncestorType(例如,通过UserControl).
| 归档时间: |
|
| 查看次数: |
5043 次 |
| 最近记录: |