gpt4 book ai didi

wpf - 命令绑定(bind)在动态 MVVM 上下文菜单中不起作用

转载 作者:行者123 更新时间:2023-12-04 13:41:07 25 4
gpt4 key购买 nike

我是 WPF 的新手。像许多其他人一样,我正在尝试绑定(bind) ContextMenuObservableCollection创建动态上下文菜单。
除了绑定(bind) Command 外,一​​切正常TheCommand 的属性(property)MenuItemViewModel 的属性(property)类,表示菜单项。该命令未触发。我究竟做错了什么?

从头开始,ContextMenuImage 的 child 并在鼠标悬停在 Image 上时显示.

 <Image.ContextMenu >
<ContextMenu ItemsSource="{DynamicResource ContextMenu}"

其中空的 ContextMenu 定义如下:
<Window.Resources>
<local:MenuItemViewModelCollection x:Key="ContextMenu">
</local:MenuItemViewModelCollection>

<HierarchicalDataTemplate DataType="{x:Type local:MenuItemViewModel}"
ItemsSource="{Binding Path=Children}">
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Command"
Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}},
Path=DataContext.TheCommand}"/>
<!-- Value="{Binding Path=TheCommand}" /> I tried this too -->

</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
</HierarchicalDataTemplate>
</Window.Resources>
TheCommand属性定义如下:

public class MenuItemViewModel : INotifyPropertyChanged
{
//...
public ICommand TheCommand
{
//...
}
}

最佳答案

ContextMenus 上的 DataContext 可能很奇怪,我敢打赌,如果您在调试时查看 Visual Studio 的输出窗口,将会出现找不到 TheCommand 的绑定(bind)错误。尝试以下操作:

<Setter Property="Command" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}, Path=PlacementTarget.DataContext.TheCommand}"/> 

这将使用启动 ContextMenu 的元素的 DataContext,而不是上下文菜单本身。

关于wpf - 命令绑定(bind)在动态 MVVM 上下文菜单中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8185467/

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