2013-04-30 66 views
1

我正在使用樹視圖控件來處理WPF應用程序。我爲雙擊事件創建了事件。但是每當我雙擊一個TreeViewItem根元素被選中。TreeView在雙擊事件時選擇Root作爲selectedItem

這裏是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,也會發生同樣的情況。有什麼問題?

+0

我無法重現您所描述的內容。您是否在TreeView上定義了任何附加綁定?你還在做什麼MouseDoubleClick方法 – Jehof 2013-04-30 09:25:05

+0

我遵循MVVM。但是對於選定的項目,我正在使用事件處理程序。這是問題嗎? – 2013-04-30 09:46:12

+0

我只能重現你描述當我點擊TreeViewItem的文本(空白處)旁邊的地方。如果我雙擊完全正確的文本SelectedItem。 – Jehof 2013-04-30 10:06:17

回答

0

這適用於我,例如您所描述的那樣簡單。 雖然我不得不爲發送者添加一個轉換,否則它不會編譯。

var selectedItem = (sender as TreeView).SelectedItem; 

如果你這樣做了,那麼問題必須在其他地方。你的代碼中有沒有其他的東西可能是問題的根源?

+0

問題是別的。我的模型出了問題。搞清楚。 – 2013-04-30 09:54:41