
<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Window.Resources> <x:Array xmlns="clr-namespace:System;assembly=mscorlib" x:Key="Array" Type="Object"> <x:ArrayExtension Type="Object"> <String>String</String> </x:ArrayExtension> </x:Array> </Window.Resources> <TreeVIEw ItemsSource="{StaticResource Array}" selecteditemchanged="Handler"> <TreeVIEw.ItemTemplate> <HIErarchicalDataTemplate ItemsSource="{Binding}"> <TextBlock Text="Array"/> <HIErarchicalDataTemplate.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding}"/> </DataTemplate> </HIErarchicalDataTemplate.ItemTemplate> </HIErarchicalDataTemplate> </TreeVIEw.ItemTemplate> </TreeVIEw> namespace WpfApplication1{ public partial class Window1 : Window { public Window1() { InitializeComponent(); } private voID Handler(object sender,EventArgs e) { var treeVIEw = sender as TreeVIEw; var container = treeVIEw.ItemContainerGenerator.ContainerFromItem(treeVIEw.SelectedItem); Title = container != null ? container.ToString() : "null"; } }}解决方法 问题是每个TreeVIEwItem本身就是一个ItemsControl,所以他们每个人都为自己的孩子管理自己的容器. 但是,有一种非常简单的方法可以执行您想要执行的 *** 作:注册到TreeVIEwItem.Selected事件,而不是注册到selecteditemchanged事件,该事件将使用设置为所选TreeVIEwItem的OriginalSource冒泡.
XAML:
<TreeVIEw ItemsSource="{StaticResource Array}" TreeVIEwItem.Selected="TreeVIEwItem_Selected"> 代码背后:
private voID TreeVIEwItem_Selected(object sender,RoutedEventArgs e) { TreeVIEwItem container = (TreeVIEwItem) e.OriginalSource; Title = container != null ? container.ToString() : "null";} 总结 以上是内存溢出为你收集整理的c# – TreeView.ItemContainerGenerator.ContainerFromItem为非根项目返回null.解决方法?全部内容,希望文章能够帮你解决c# – TreeView.ItemContainerGenerator.ContainerFromItem为非根项目返回null.解决方法?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)