`
wangleifire
  • 浏览: 500692 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

System.Windows.Controls.TreeViewItem 加图标

    博客分类:
  • c#
阅读更多

写在前面:使用传统的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);
                }
            }

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics