C# TreeView在双击事件时选择根作为selectedItem
我正在使用树状视图控件开发WPF应用程序。我为双击事件创建了事件。但是,每当我双击一个TreeViewItem根元素时,它就会被选中 这是XAMLC# TreeView在双击事件时选择根作为selectedItem,c#,wpf,mvvm,treeview,C#,Wpf,Mvvm,Treeview,我正在使用树状视图控件开发WPF应用程序。我为双击事件创建了事件。但是,每当我双击一个TreeViewItem根元素时,它就会被选中 这是XAML <HierarchicalDataTemplate x:Key="TreeViewItem" ItemsSource="{Binding Children}"> <StackPanel Orientation="Horizontal"> <TextBlock Margin="2" Text="{B
<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">
这是我的TreeView结构示例
CountryA
CityA
Street1
Street2
CityB
Street3
CountryB
CityC
现在,如果我双击Street1,那么在事件处理程序sender.SelectedItem中是CountryA。如果我双击CityA或CityB,也会发生同样的情况。有什么问题吗?这对我很有效,举一个像你描述的那样简单的例子。 不过,我必须为发件人添加一个cast,否则它将无法编译
var selectedItem = (sender as TreeView).SelectedItem;
如果你这样做了,那么问题肯定出在其他地方。您的代码中是否还有其他可能是问题根源的内容?我无法重现您所描述的内容。您是否在TreeView上定义了其他绑定。你在鼠标双击方法中还做了什么我遵循了MVVM。但对于所选项目,我使用事件处理程序。这就是问题所在吗?我只能在单击TreeViewItem文本(空白)旁边的某个位置时重现您所描述的内容。如果我双击文本,SelectedItem是正确的。我尝试调试。我为选定的已更改事件添加了另一个事件。现在,当我双击子节点,然后选择IonChangedEvent点击两次。一个是孩子,第二个是根。问题是别的。我的模型有点问题。弄明白了。
var selectedItem = (sender as TreeView).SelectedItem;