zoukankan      html  css  js  c++  java
  • 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;
                }
            }
        }
  • 相关阅读:
    利用CMake生成动态或静态链接库工程
    pdfminer的TextConverter得到文件字符无空格解决方法
    从面向对象的设计模式看软件设计
    google python/c++ code style naming
    python入门之random模块
    python入门之time模块和datetime模块
    关于使用rancher部署k8s集群的一些小问题的解决
    centos虚拟机安装指定版本docker
    k8s的nfs存储外挂设置过程
    【Jenkins】执行yarn install报错:error An unexpected error occurred:"... ... :Unexpected end of JSON input"
  • 原文地址:https://www.cnblogs.com/qwqwQAQ/p/11980514.html
Copyright © 2011-2022 走看看