【发布时间】:2024-04-20 12:55:02
【问题描述】:
我正在开发一个带有树视图控件的 WPF 应用程序。我为双击事件创建了事件。但是每当我双击一个 TreeViewItem 根元素时,就会被选中。
这里是 XAML
<HierarchicalDataTemplate x:Key="TreeViewItem" ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<TextBlock Margin="2" Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<TreeView
ItemTemplate="{StaticResource TreeViewItem}"
ItemsSource="{Binding Hosts}"
MouseDoubleClick="TreeView_MouseDoubleClick">
这是我的代码。
private void TreeView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var selectedItem = sender.SelectedItem;
}
这是我的 TreeView 结构示例
CountryA
CityA
Street1
Street2
CityB
Street3
CountryB
CityC
现在,如果我双击 Street1,那么在事件处理程序中 sender.SelectedItem 是 CountryA。如果我双击 CityA 或 CityB,也会发生同样的情况。有什么问题?
【问题讨论】:
-
我无法重现您所描述的内容。您是否在 TreeView 上定义了任何其他绑定。你在 MouseDoubleClick 方法中还做了什么
-
我已经关注了 MVVM。但是对于选定的项目,我正在使用事件处理程序。是这个问题吗?
-
当我单击 TreeViewItem 的文本(空白)旁边的某个位置时,我只能重现您所描述的内容。如果我在 Text 上精确双击 SelectedItem 是正确的。
-
我尝试调试。我为选定的更改事件添加了另一个事件。现在,当我双击子节点时,SelecteionChangedEvent 会命中两次。一个是给孩子的,第二个是给根的。