2014-03-26 60 views
-2

我想檢索樹狀視圖中選定項目的標題。如何檢索樹狀視圖中的選定項目

我的代碼: XAML:

<TreeView x:Name="TreeView" HorizontalAlignment="Left" Margin="10,22,0,10" Width="223" SelectedItemChanged="item" > 
     <TreeViewItem x:Name="Accueil" Header="Accueil" RenderTransformOrigin="0.502,-1.125"/> 
     <TreeViewItem x:Name="Comptes" Header="Comptes" IsExpanded="True"/> 
    </TreeView> 

C#:

private void item(object sender, RoutedPropertyChangedEventArgs<object> e) 
    { 
     string compteselectionne = Convert.ToString(TreeView.SelectedItem); 
     if (compteselectionne=="Comptes") 
     { 
      ListeComptes.Visibility = Visibility.Visible; 
     } 
     ListeComptes.Visibility = Visibility.Hidden; 
    } 

這段代碼顯示我的東西像System.Windows.Controls.TreeViewItem標題:審計法院Items.Count:1

感謝提前

回答

2

string compteselectionne = ((TreeViewItem)TreeView.SelectedItem).Header;

0

你也可以做以下

private void item(object sender, RoutedPropertyChangedEventArgs<object> e) 
{ 
    TreeView tree = sender as TreeView; 
    TreeViewItem item = tree.SelectedItem as TreeViewItem; 
} 
2

如果你使用MVVM方法正確你應該IsSelectedTreeViewItemTwoWay(或OneWayToSource)模式具有約束力,並尋找這個屬性爲對你的ViewModel是真的,其他的東西都應該在那裏。

例子我怎麼會做它:

XAML(如果我的ViewModel有一個屬性上叫IsSelected & HeaderText設置頭):

<TreeView ItemsSource="{Binding MyCollectionOfItems}"> 
    <TreeView.Resources> 
     <Style TargetType="{x:Type TreeViewItem}"> 
      <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" /> 
      <Setter Property="Header" Value="{Binding HeaderText}" /> 
     </Style> 
    </TreeView.Resources> 
</TreeView> 

並在代碼中,我可以很容易找到當前正在進行的選擇:

//null result of the following means there's no selection 
var selectedItem = MyCollectionOfItems.SingleOrDefault(x => x.IsSelected) 
+1

在附註上,同樣的技巧還允許您拉取多個選項,如果視圖支持c將'SingleOrDefault'掛到'Where'(甚至是'FirstOrDefault',如果這是所期望的) – Maverik

相關問題