zoukankan      html  css  js  c++  java
  • WPF CollectionViewSource CollectionView

    CollectionView 通俗讲就是可以对你绑定的集合可以进行 分组,排序 等功能

    CollectionViewSource  根据字面意思是xxx的数据源

    详细的介绍还是看

    http://www.cnblogs.com/zhouyinhui/archive/2007/12/07/987076.html

    文字描述太复杂 了看不懂  

    最后只知道一句

    可以对你页面绑定的集合(gridview listBox等)可以进行分组 排序等功能。

    例子:

    <Window x:Class="WpfApplication1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
            Title="MainWindow" Height="350" Width="525" Name="UI">
    
        <!--资源文件(页面级) 类似javascript什么的全局变量-->
        <Window.Resources>
            <!--x:Key="Items" 类似申明一个ID Source数据源 binding--> 
            <CollectionViewSource x:Key="objID" Source="{Binding ElementName=UI, Path=Items}" >
                <CollectionViewSource.SortDescriptions>
                    
                    <!--scm ComponentModel命名空间下 你说我个小白开始知道吗?-->
                    <!--PropertyName="Id" 理解key value 类似(color: #075db3;) PropertyName=>color  Id Items里面的属性-->
                    <scm:SortDescription PropertyName="Id" />
                    
                </CollectionViewSource.SortDescriptions>
            </CollectionViewSource>
            
        </Window.Resources>
    
        <Grid>
            <!--实例化具体的控件类 数据源来源于上面指定的ID StaticResource 静态-->
            <ListBox ItemsSource="{Binding Source={StaticResource objID}}" />
        </Grid>
    </Window>
    

    后台cs:

        public partial class MainWindow : Window
        {
    
            /// <summary>
            /// ObservableCollection 通俗就是myVar变了我会告诉你 通知你(类似线程的回调函数通知UI线程一样)
            /// </summary>
            private ObservableCollection<MyObject> myVar = new ObservableCollection<MyObject>();
    
            /// <summary>
            /// 属性没什么好解释的
            /// </summary>
            public ObservableCollection<MyObject> Items
            {
                get { return myVar; }
                set { myVar = value; }
            }
    
            /// <summary>
            /// 构造函数
            /// </summary>
            public MainWindow()
            {
                //创建页面控件和实例化一些对象如窗体 你为什么是控件呢 为什么要我搞cs呢?你不知道我讨厌控件吗?
                InitializeComponent();
    
                //赋值 add 没什么好解释的
                Items.Add(new MyObject { Description = "Stack", Id = 5 });
                Items.Add(new MyObject { Description = "OverFlow", Id = 1 });
                Items.Add(new MyObject { Description = "StackOverFlow", Id = 2 });
                Items.Add(new MyObject { Description = "Stack", Id = 1 });
                Items.Add(new MyObject { Description = "Stack", Id = 0 });
                Items.Add(new MyObject { Description = "OverFlow", Id = 7 });                 
            }
    
        }
    
        /// <summary>
        /// 申明类 没什么好解释的
        /// </summary>
        public class MyObject
        {
            public int Id { get; set; }
    
            public string Description { get; set; }
    
            /// <summary>
            /// 重写ToString方法
            /// </summary>
            /// <returns></returns>
            public override string ToString()
            {
                return string.Format("Desc: {0}, Id: {1}", Description, Id);
            }
        }

    结果:

    核心:

    binging

    前台和后台最终编译成一个类(dll) 说的通俗一点就是前台和后台在是一个类 一个类里面互相调用方法和属性 不是很正常吗?这样就理解了

    为什么前台可以调用后台 (说到底 不管什么最后都是对象 就是对象之间的访问!这个也行就是oop吧)

    最后Window 是根 他就有所有后台的方法和属性

    最后 Source="{Binding ElementName=UI, Path=Items}" 翻译成汉语就是:绑定到元素名称为  UI 的对象的名称为 Items 的属性。

    通俗 就是我的数据源是name是UI(就是window里面的name) Items就是UI里面的属性 

    同理 Source = "{Binding Items}" 翻译成汉语就是绑定到当前数据上下文的名称为 Items 的属性。上下文=>DataContext

    最后吐槽下 微软你为什么封装的那么完美 你知道对别人来说意味着什么 =>Long live open source

  • 相关阅读:
    Making Pimpl Easy
    OpenCV学习资源
    openCV基础学习(1)
    fl2440原始linux代码的启动日志
    《s3c2440+lan91c111 vxworks驱动调试》疑惑
    使用并行的方法计算斐波那契数列 (Fibonacci)
    [译] SolidWorks的发展历史(1994~2007)
    翻译介绍一点CAD发展的历史
    使用fopen的两点注意事项
    四元数(Quaternions)简介
  • 原文地址:https://www.cnblogs.com/y112102/p/3770887.html
Copyright © 2011-2022 走看看