gpt4 book ai didi

带有 ItemsSource 的 WPF ContextMenu - 如何在每个项目中绑定(bind)到 Command?

转载 作者:行者123 更新时间:2023-12-03 11:53:35 28 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




10年前关闭。




Possible Duplicate:
Specify Command for MenuItem in a DataTemplate



我有一组代表菜单项的对象( View 模型)。他们每个人都有一个我想在单击 MenuItem 时执行的命令。

如果我想静态地做菜单,我会这样做:
<ContextMenu>
<MenuItem Header="{Binding Text1}" Command={Binding Command1}>
<MenuItem Header="{Binding Text2}" Command={Binding Command2}>
</ContextMenu>

但是当我事先不知道这些项目(它们来自一个集合)时,我需要分配 ContextMenu.ItemsSource - 并将文本放入 ItemTemplate。
<ContextMenu ItemsSource="{Binding MyMenuItems}">
<ContextMenu.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Text2}" /> <!-- But where to put Command binding? TextBlock.Command makes no sense, and we have no access to MenuItem! -->
</DataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>

但是,这样一来,我就无法将 Command 绑定(bind)到 - 因为我无法为每一行获取 MenuItem!

请问有什么建议吗?谢谢你们!

最佳答案

<ContextMenu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Command" Value="{Binding AssociatedCommand}" />
</Style>
</ContextMenu.ItemContainerStyle>

其中 AssociatedCommand 是持有 ICommand 的 viewmodel 对象的属性。

关于带有 ItemsSource 的 WPF ContextMenu - 如何在每个项目中绑定(bind)到 Command?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1580753/

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