【发布时间】:2023-04-01 05:18:01
【问题描述】:
因为我发现了很多关于我的问题的任务(问题),我仍然不知道它是如何工作的。 即使它是一个过于复杂的示例,或者只是缺少所需的命名空间。所以经过一小时的研究,我的问题......
如何将双击命令集成到我的 WPF 树视图 (-items)?
其实我的树是这样的:
<!-- used Namespace: xmlns:i="http://schemas.microsoft.com/xaml/behaviors" -->
<TreeView DataContext="{Binding ProjectTree}" ItemsSource="{Binding ProjectNode}" DockPanel.Dock="Left"
x:Name="ProjectTree" Margin="0 0 2 0" Grid.Column="0">
<TreeView.ContextMenu>
<ContextMenu StaysOpen="True">
<MenuItem Header="Löschen" Height="20"
Command="{Binding RemoveNodeCommand}"
CommandParameter="{Binding ElementName=ProjectTree, Path=SelectedItem}">
<MenuItem.Icon>
<Image Source="/Icons/32x32/Remove_32x32.png" Width="15" Height="15"/>
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</TreeView.ContextMenu>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectedItemChanged">
<i:InvokeCommandAction Command="{Binding TreeNodeSelectedCommand}"
CommandParameter="{Binding ElementName=ProjectTree, Path=SelectedItem}"/>
</i:EventTrigger>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding UpdateNodeCommand}"
CommandParameter="{Binding ElementName=ProjectTree, Path=SelectedItem}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}"/>
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
<Setter Property="FontWeight" Value="Normal"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold"/>
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<Image Margin="3" Source="{Binding ItemType, Converter={x:Static misc:TreeItemImageConverter.Instance }}" Width="20" />
<TextBlock VerticalAlignment="Center" Text="{Binding Name}"/>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
我不太了解 Interaction.Triggers 的工作原理,但它们应该是正确的方式吗?
我正在为我的菜单和按钮命令使用 ICommand 和中继命令。到目前为止,我的视图模型中一切正常。
对不起,如果这是一个菜鸟问题。
编辑
因为这不是一个菜鸟问题,而是一个菜鸟错字,MouseDoubleClick 只是作为SelectedItemChanged 工作,所以我的问题是不必要的。 (上面更新了代码)
【问题讨论】: