c# – TreeView.ItemContainerGenerator.ContainerFromItem为非根项目返回null.解决方法?

c# – TreeView.ItemContainerGenerator.ContainerFromItem为非根项目返回null.解决方法?,第1张

概述在下面的示例中,当我选择“String”时,窗口的标题变为“null”.但我必须获得“String”的容器.具体来说,我想做相当于SelectedItem = null(但该属性只读取TreeView,所以我试图到容器将其IsSelected设置为false).该怎么办? <Window x:Class="WpfApplication1.Window1" xmlns="http://schemas 在下面的示例中,当我选择“String”时,窗口的标题变为“null”.但我必须获得“String”的容器.具体来说,我想做相当于SelectedItem = null(但该属性只读取TreeVIEw,所以我试图到容器将其IsSelected设置为false).该怎么办?
<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.解决方法?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1262973.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存