gpt4 book ai didi

wpf - DataTemplate WPF 中的外部属性

转载 作者:行者123 更新时间:2023-12-05 00:09:16 27 4
gpt4 key购买 nike

场景:我有一个 ListBox,而 ListBoxItems 有一个 DataTemplate。我想要做的是在 DataTemplate 中放置一个 ContextMenu。问题是我希望这个 ContextMenu ItemsSource 根据窗口中的某些属性而有所不同。我最初的想法是我可以将 ItemsSource 绑定(bind)到窗口中的一个属性,然后返回一个 ItemsSource;但是,我似乎无法正确绑定(bind)到此属性。我相信这是因为我在 DataTemplate 中,因此 DataContext(我相信这是正确的词)属于那个 ListBoxItem 而不是窗口。
如何让 DataTemplate 中的 ContextMenu 绑定(bind)到 DataTemplate 之外的属性。

最佳答案

您可以使用 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>

不完全确定,但绑定(bind)是正确的......
如果您的 DataContext 是另一个对象类型,您只需更改 AncestorType(例如通过 UserControl)。

关于wpf - DataTemplate WPF 中的外部属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/702987/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com