我想在树视图中检索所选项目的标题。
我的代码: 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
感谢您提前
答案 0 :(得分:2)
string compteselectionne = ((TreeViewItem)TreeView.SelectedItem).Header;
答案 1 :(得分:2)
如果您正确使用MVVM方法 ,则应IsSelected
TwoWay
OneWayToSource
模式TreeViewItem
对IsSelected
具有约束力在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;
}