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;
                }
            }
        }
  • 相关阅读:
    Extjs4.0中清空filefield已选文件
    .net操作读取word中的图像并保存
    WebForm_PostBackOptions未定义 错误排查
    数据库关键字
    VS2008生成WebSite和WebApplication的区别(转载)
    安装天乙论坛(SSH架构的开源项目)时遇到的问题
    Hibernate与Oracle char类型的列之间的兼容问题
    关于spring3使用AOP编程时需要引入哪些jar包的问题
    让IE支持HTML5的Canvas
    IIS + TOMCAT 注意事项
  • 原文地址:https://www.cnblogs.com/qwqwQAQ/p/11980514.html
Copyright © 2011-2022 走看看