WPF ItemsControl ListBox ListView比较

2021-05-14 05:29

阅读:416

标签:ict   als   .com   windows   init   div   选择   owb   fonts   

在进行列表信息展示时,WPF中提供多种列表可供选择。这篇博客将对WPF ItemsControl, ListBox, ListView进行比较。

相同点:

1. 这三个控件都是列表型控件,可以进行列表绑定(ItemsSource);

2. 这三个控件均使用ItemsPresenter来展示列表信息;

不同点:

控件层次关系:

ItemsControl:

System.Object 
  System.Windows.Threading.DispatcherObject
    System.Windows.DependencyObject
      System.Windows.Media.Visual
        System.Windows.UIElement
          System.Windows.FrameworkElement
            System.Windows.Controls.Control
              System.Windows.Controls.ItemsControl

ListBox:

System.Object 
  System.Windows.Threading.DispatcherObject
    System.Windows.DependencyObject
      System.Windows.Media.Visual
        System.Windows.UIElement
          System.Windows.FrameworkElement
            System.Windows.Controls.Control
              System.Windows.Controls.ItemsControl
                System.Windows.Controls.Primitives.Selector
                  System.Windows.Controls.ListBox

ListBox 继承于ItemsControl,增加了一个Selector对象,ItemsControl中的Item是不支持选择的。而ListBox中Item是支持选择,并且可以单选,多选。

ListView:

System.Object 
  System.Windows.Threading.DispatcherObject
    System.Windows.DependencyObject
      System.Windows.Media.Visual
        System.Windows.UIElement
          System.Windows.FrameworkElement
            System.Windows.Controls.Control
              System.Windows.Controls.ItemsControl
                System.Windows.Controls.Primitives.Selector
                  System.Windows.Controls.ListBox
                    System.Windows.Controls.ListView

ListView继承与ListBox,增加了一个View依赖属性。

ItemsControl是不包含水平和垂直方向的滚动条的。ListBox和ListView有水平和垂直方向滚动条。

ItemControl的样式:

技术分享

技术分享

ListBox和ListView的样式基本一样,除了TargetType外,

技术分享

技术分享

在项目中如何选择使用这三个控件;

1. 如果列表信息只做展示,但不提供选择功能,可以使用ItemsControl;

2. ListView比ListBox增加了一个View属性。

示例代码:

ItemsControl vs ListBox (Selector)

技术分享
    
技术分享

C#

技术分享
    public class Task
    {
        public string Name { get; set; }

        public int Priority { get; set; }
    }

    ObservableCollection _tasks = null;
    public MainWindow()
    {
        InitializeComponent();

        _tasks = new ObservableCollection()
        {
            new Task() { Name = "Shopping",Priority = 2 },
            new Task() { Name = "Laundry",Priority = 2 },
            new Task() { Name = "Email",Priority = 1 },
            new Task() { Name = "Writting",Priority = 2 },
            new Task() { Name = "Learning",Priority = 2 },
            new Task() { Name = "Working",Priority = 2 },
        };

        DataContext = _tasks;
    }
技术分享

运行效果:

技术分享

ListView View属性的使用

技术分享
技术分享

运行效果:

技术分享

感谢您的阅读,代码点击这里下载。

WPF ItemsControl ListBox ListView比较

标签:ict   als   .com   windows   init   div   选择   owb   fonts   

原文地址:http://www.cnblogs.com/wangchaoyuana/p/7523411.html


评论


亲,登录后才可以留言!