Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TreeView在双击事件时选择根作为selectedItem_C#_Wpf_Mvvm_Treeview - Fatal编程技术网

C# TreeView在双击事件时选择根作为selectedItem

C# 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

我正在使用树状视图控件开发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">
这是我的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;