2014-03-26 2 views
-2

Я хочу получить заголовок выбранного элемента в древовидной структуре.Как получить выбранный элемент в treeview

Мой код: 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 Заголовок: Comptes 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 подход правильно вы должны быть обязательными для IsSelected в TwoWay (или OneWayToSource) режиме TreeViewItem и ищет это свойство быть true на ваших ViewModels, и все остальное должно быть там.

Пример, как бы я это сделать:

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

Смежные вопросы