2014-03-26 37 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

相关问题