gpt4 book ai didi

c# - 在具有分层数据模板的 TreeView 中绑定(bind)上下文菜单命令

转载 作者:太空宇宙 更新时间:2023-11-03 15:14:14 25 4
gpt4 key购买 nike

我有一个带有分层数据模板的 TreeView ,我正在尝试为 ContextMenu 设置 DataContext,因此我可以将命令绑定(bind)到它。我做过研究,知道 ContextMenu 不会继承其父项的 DataContext。我试着关注这些帖子:How to set the RelativeSource in a DataTemplate that is nested in a HierarchicalDataTemplate?

How to bind to the DataContext of a HierarchicalDataTemplate from its ItemTemplate XAML?但仍然无法正常工作。任何帮助,将不胜感激。这是我的示例代码:

<TreeView.Resources>  
<HierarchicalDataTemplate DataType="{x:Type viewModels:SiteViewModel}" ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<StackPanel.Resources>
</StackPanel.Resources>
<Image Width="16" Height="16" Margin="3,0" />
<TextBlock Text="{Binding SiteName}" />
</StackPanel>
</HierarchicalDataTemplate>


<HierarchicalDataTemplate DataType="{x:Type viewModels:LevelViewModel}" ItemsSource="{Binding Children}" >
<StackPanel Orientation="Horizontal" >
<Image Width="16" Height="16" Margin="3,0" />
<TextBlock Text="{Binding LevelName}" >
<TextBlock.ContextMenu >
<ContextMenu>
<MenuItem Header="Test" Command="{Binding ?????????" CommandParameter="{Binding}"/>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</StackPanel>
</HierarchicalDataTemplate>

最佳答案

解决方法之一:就我而言,我有类似的事情:

<DataTemplate DataType="...">
<TreeView>
<TreeViewItem Tag="{Binding ElementName=LocalControl, Path=DataContext}"
Header="{Binding ...}"
ContextMenu="{StaticResource ...}">
...
</TreeViewItem>
</TreeView>
</DataTemplate>

您需要将父级 TreeViewItem 的 Tag 属性绑定(bind)到它的 DataContext,然后在上下文菜单的分层模板中的某处,您应该将其 DataContext 绑定(bind)到父级控件的 Tag:

<ContextMenu x:Key="CyclogramFolderContextMenu"
DataContext="{Binding Path=PlacementTarget.Tag, RelativeSource={RelativeSource Self}}">
<TextBlock Text="Do something" >
<TextBlock.InputBindings>
<MouseBinding Command="{Binding Path=(viewModels:someViewModel.SomeCommand)}" MouseAction="LeftClick" />
</TextBlock.InputBindings>
</TextBlock>
</ContextMenu>

关于c# - 在具有分层数据模板的 TreeView 中绑定(bind)上下文菜单命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39702961/

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