System.Windows.Controls.TreeViewItem 加图标

写在前面:使用传统的TreeView,要增加个小功能,如三状态的TreeItem,经常都是需要很高的编程技术和大量的代码。而在.net新的界面设计中平台中,这个事情是很容易的,你要做的事就是发挥自己的想像力,组装手头上的小组件。

效果图
下图的图标功能,不是使用winform平台的ImageList和TreeView的组合做出来的,而是通过继承和自定义 TreeViewItem实体的效果,并且,代码量还真是少,关键点在于,TreeViewItem的Header的属性是object,也就是相当于别 的控件的Content,object表示,你可以任意放内容进去。
 

源代码
既然可以任意放内容进Header属性,那就放一个容器进去也没问题。正是出于这个想法,就放在一个StackPanel,它的内部 依次是TextBlock和Image,然后为Image指定设置的属性SelectedImage和UnselectedImage,这是 System.Windows.Media.ImageSource类型的对象。
最后,在项目中放一些图片来使用。如在根目录下,放一个Images文件夹,下面放多个图片。这个图片的生成操作都是嵌入的资源。
            for (int i = 0; i < 10; i++)
            {
                ImagedTreeViewItem _pitem = new ImagedTreeViewItem();
                _pitem.Text = "测试分支" + i;
                _pitem.SelectedImage = new BitmapImage(
                    new Uri("pack://application:,,/Images/OPENFOLD.BMP"));
                _pitem.UnselectedImage = new BitmapImage(
                    new Uri("pack://application:,,/Images/CLSDFOLD.BMP"));
                treeView1.Items.Add(_pitem);

                for (int j = 0; j < 5; j++)
                {
                    ImagedTreeViewItem _item = new ImagedTreeViewItem();
                    _item.Text = "测试分支" + j;
                    _item.SelectedImage = new BitmapImage(
                        new Uri("pack://application:,,/Images/OPENFOLD.BMP"));
                    _item.UnselectedImage = new BitmapImage(
                        new Uri("pack://application:,,/Images/CLSDFOLD.BMP"));
                    _pitem.Items.Add(_item);
                }
            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值