gpt4 book ai didi

WPF mvvm 通过命令发送 TreeViewItem 的绑定(bind)元素

转载 作者:行者123 更新时间:2023-12-03 10:14:12 25 4
gpt4 key购买 nike

白天好。

我在创建 ContextMenu 时遇到问题的 TreeView .问题很简单。我想向 TreeView 添加新项目,单击 TreeView 项目上的人民币并选择上下文菜单命令。
我知道我需要向我的命令传递一个包含父项的参数。但。我需要我可以人民币点击任何treeviewitem,而不仅仅是选中。
这是问题 :
如何将 treeviewitem 的绑定(bind)数据传递给我的命令。

这是类诊断
enter image description here

这是 Xaml ( 编辑 )

        <TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Item.Children}">
<TextBlock Text="{Binding Item.Code}" HorizontalAlignment="Stretch">
<TextBlock.ContextMenu>
<ContextMenu Name="MyContextMenu" DataContext="{Binding PlacementTarget,RelativeSource={RelativeSource Self}}">
<MenuItem Header="{Binding DataContext.ToString()}" Command="{Binding DataContext.Item.AddNewItemCommand}" CommandParameter="{Binding}"/>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>

但它甚至没有调用我的命令。
    private void AddNewItem(object toItem)
{
if (toItem == null)
return;
ItemViewModel item = toItem as ItemViewModel;
ItemMaterialModel itemMaterial = new ItemMaterialModel(ItemModel.CreateNewItem());

ItemMaterialViewModel itemMaterialViewModel = new ItemMaterialViewModel(itemMaterial);
item.Children.Add(itemMaterialViewModel);
}

也许我的命令在错误的 ViewModel 中?

问候,德米特里。

最佳答案

嗨,这只是您可以绑定(bind)的一种方式

        <ContextMenu Name="MyContextMenu" DataContext="{Binding PlacementTarget,RelativeSource={RelativeSource Self}}">
<MenuItem Header="Add" Command="{Binding DataContext.AddNewItemCommand}" CommandParameter="{Binding }"/>
</ContextMenu>

我希望这将有所帮助。

关于WPF mvvm 通过命令发送 TreeViewItem 的绑定(bind)元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14673073/

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