c# WPF——创建带有图标的TreeView

1.使用数据模板对TreeViewItem进行更改

2.xaml中重写TreeviewItem的控件模板

3.继承TreeViewItem(TreeView中的元素),后台进行控件重写。(介绍此方法)

代码:

     ImageSource iconSource;//图标对象
        TextBlock textBlock;
        Image icon;//treeviewitem中的图标

        public TreeViewWithIcons()
        {
            StackPanel stack = new StackPanel();
            stack.Orientation = Orientation.Horizontal;
            Header = stack;
            //Uncomment this code If you want to add an Image after the Node-HeaderText
            //textBlock = new TextBlock();
            //textBlock.VerticalAlignment = VerticalAlignment.Center;
            //stack.Children.Add(textBlock);
            icon = new Image();
            icon.VerticalAlignment = VerticalAlignment.Center;
            icon.Height = 10;
            icon.Width = 10;
            icon.Margin = new Thickness(0, 0, 4, 0);
            icon.Source = iconSource;
            stack.Children.Add(icon);
            //Add the HeaderText After Adding the icon
            textBlock = new TextBlock();
            textBlock.VerticalAlignment = VerticalAlignment.Center;
            stack.Children.Add(textBlock);
        }

将TreeviewItem的header设置成stackpanel,将图标和文本以横向填充进该stackpanel

完整代码:

public class TreeViewWithIcons : TreeViewItem
    {
        ImageSource iconSource;
        TextBlock textBlock;
        Image icon;

        public TreeViewWithIcons()
        {
            StackPanel stack = new StackPanel();
            stack.Orientation = Orientation.Horizontal;
            Header = stack;
            //Uncomment this code If you want to add an Image after the Node-HeaderText
            //textBlock = new TextBlock();
            //textBlock.VerticalAlignment = VerticalAlignment.Center;
            //stack.Children.Add(textBlock);
            icon = new Image();
            icon.VerticalAlignment = VerticalAlignment.Center;
            icon.Height = 10;
            icon.Width = 10;
            icon.Margin = new Thickness(0, 0, 4, 0);
            icon.Source = iconSource;
            stack.Children.Add(icon);
            //Add the HeaderText After Adding the icon
            textBlock = new TextBlock();
            textBlock.VerticalAlignment = VerticalAlignment.Center;
            stack.Children.Add(textBlock);
        }

        public ImageSource Icon
        {
            set
            {
                iconSource = value;
                icon.Source = iconSource;
            }
            get
            {
                return iconSource;
            }
        }

        protected override void OnUnselected(RoutedEventArgs args)
        {
            base.OnUnselected(args);
            icon.Source = iconSource;
        }

        protected override void OnSelected(RoutedEventArgs args)
        {
            base.OnSelected(args);
            icon.Source = iconSource;
        }

        /// <summary>
        /// Gets/Sets the HeaderText of TreeViewWithIcons
        /// </summary>
        public string HeaderText
        {
            set
            {
                textBlock.Text = value;
            }
            get
            {
                return textBlock.Text;
            }
        }
    }

原文地址:https://www.cnblogs.com/qwqwQAQ/p/11980514.html

时间: 2024-11-14 02:34:11

c# WPF——创建带有图标的TreeView的相关文章

WPF 带CheckBox、图标的TreeView

WPF 带CheckBox.图标的TreeView 在WPF实际项目开发的时候,经常会用到带CheckBox的TreeView,虽然微软在WPF的TreeView中没有提供该功能,但是微软在WPF中提供强大的ItemTemplate模板功能和自定义样式,那我们可以自己写一个这样的控件供自己使用. 我自己写的这个比较简单. 首先写一个供TreeView使用的数据模型,并且实现INotifyPropertyChanged接口,用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知,当属性改

[Android 成长之路]2-实现带图标的ListView

--by San[[email protected]] 在编写列表时,如果是普通的列表,使用ListView + ArrayAdapter 即可实现,但是如果要在每个列表项中文字前配一个图标了,或者在文字后面再配一个图标,这个就可以用 SimpleAdapter 实现了,不要被它的名字欺骗了,It is not simple, it is powerful. 我们以制作一个带图标的菜单列表为例,首先我们创建一个布局文件 menu_frame.xml,里面包含一个 ListView, 代码如下:

使用StarUML创建类图

使用StarUML创建类图 http://www.flyne.org/article/379 1.综述(What) StarUML是一种生成类图和其他类型的UML图表的工具.本文是一个使用StarUML创建类图(Java语言描述)的简明手册. StarUML(简称SU),是一种创建UML类图,并能够自动生成Java的“stub code” 的工具.SU也可以做JAVA逆向工程,以产生相应的UML图表. 在本教程中,我们将使用SU设计一个pizza饼.执行后续步骤,可以创建如下面所示的UML图.S

利用WPF创建含多种交互特性的无边框窗体

咳咳,标题一口气读下来确实有点累,让我先解释一下.另外文章底部有演示程序的下载. 本文介绍利用WPF创建一个含有以下特性的窗口: 有窗口阴影,比如QQ窗口外围只有几像素的阴影: 支持透明且无边框,为了自行美化窗口通常都会想到使用无边框窗口吧: 可正常最大化,WPF无边框窗口直接最大化会直接使窗口全屏即会将任务栏一并盖住: 窗口边缘改变窗口大小,可以拖动窗口边缘改变大小: 支持等同于标题栏的全窗口空白区拖动,这一特性可以参考QQ: 支持多显示器环境. 上述针对无边框窗口的特性均可以独立实现,本文将

WPF新手之如何自定义TreeView点击后的背景色

转载自csdn:WPF新手之如何自定义TreeView点击后的背景色 其它控件也同样适用: 对于一时找不出好办法的情况,直接用StyleSnooper找到所需的控件,查看它的默认Style.然后找到所需的设置,如这里是找到 [xhtml] view plaincopy 1 <Trigger Property="TreeViewItem.IsSelected"> 2 <Setter Property="Panel.Background" Target

OpenStack之KVM用virt-manager创建带有OS的image

第一次用virt-manager创建带有OS的image时,在最后一步总会遇到下面这个错误.后来发现应该是libvirt的问题,选择重新编译安装另一个版本.这里重新选择的时libvirt-1.1.4 Unable to complete install: 'Failed to connect socket to '/var/run/libvirt/virtlogd-sock': No such file or directory' libvirtError: Failed to connect

Hbase 无法创建带有snappy压缩属性的表

一.要求 在Hbase 数据库中创建带有snappy压缩属性的表. 二.登陆到hbase 数据库执行建表操作 hbase(main):016:0> create 'dcs:t_dev_history',{NAME => 'f', DATA_BLOCK_ENCODING => 'PREFIX_TREE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => '

NPOI-Excel系列-1002.创建带有Document Summary Information和Summary Information的Excel文件

1. 1 using NPOI.HSSF.UserModel; 2 using NPOI.HPSF; 3 using NPOI.POIFS.FileSystem; 4 using Microsoft.VisualStudio.TestTools.UnitTesting; 5 using System.IO; 6 using System; 7 namespace NPOI.Sample1 8 { 9 /// <summary> 10 /// 创建Excel文件 11 /// </summ

【百度地图API】如何快速创建带有标注的地图?——快速创建地图工具+如何标注商家

原文:[百度地图API]如何快速创建带有标注的地图?--快速创建地图工具+如何标注商家 摘要: 如果你不会程序,如果你不想写代码. 如果你想拥有一张自己的地图,如果你想在该地图上标注出你商店的位置. 不要犹豫了,就使用快速创建地图工具吧! -------------------------------------------------------------------------------------- 如何快速创建地图? 一.转入百度提供的快速创建地图工具页面:http://openap