如何在树视图中检索所选项目

时间:2014-03-26 17:21:28

标签: c# wpf

我想在树视图中检索所选项目的标题。

我的代码: 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

感谢您提前

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

如果您正确使用MVVM方法 ,则应IsSelected TwoWay OneWayToSource模式TreeViewItemIsSelected具有约束力在ViewModel上寻找这个属性是真的,其他一切都应该在那里。

示例我是如何做到的:

XAML(我的ViewModel上有一个名为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}}

答案 2 :(得分:0)

您也可以执行以下操作

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