zoukankan      html  css  js  c++  java
  • WPF:在DataTemplate中使用DataType

    DataTemplate中的DataType的功能实际上和Style中的TargetType很类似。

    在Style中,使用了TargetType之后,如果不定义Style的Key,那么这个Style将会影响到它所在区域的所有TargetType控件的样式。

    同理,在DataTemplate中,使用了DataType之后,如果不定义DataTemplate的Key,那么这个DataTemplate将应用于它所在区域,所有的以这个DataType为数据源的控件。

    我写了一个小例子来展示这个效果。

    定义Model,Person:

        public class Person
        {
            public string Name
            {
                get;
                set;
            }
    
            public int Age
            {
                get;
                set;
            }
        }

    定义ViewModel:

        public class MainViewModel
        {
            public ObservableCollection<Person> AllPerson
            {
                get;
                set;
            }
    
            public MainViewModel()
            {
                AllPerson = new ObservableCollection<Person>
                {
                    new Person
                    {
                        Name = "张三",
                        Age = 18
                    },
                    new Person
                    {
                        Name = "李四",
                        Age = 28
                    }
                };
            }
        }

    定义DataTemplate,使用了DataType:

        <Window.Resources>
            <DataTemplate DataType="{x:Type local:Person}">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Name}" />
                    <TextBlock Text="{Binding Age}" />
                </StackPanel>
            </DataTemplate>
        </Window.Resources>

    ItemControl的ItemTemplate使用上面定义的DataTemplate:

            <ItemsControl ItemsSource="{Binding AllPerson}">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Vertical" />
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
            </ItemsControl>

    由于ItemControl的Item的数据源为Person,且存在具有Person为DataType的DataTemplate,所以ItemControl的ItemTemplate会自动应用上面定义的DataTemplate。

    运行效果如下:

  • 相关阅读:
    Kubernets 第一讲 初探
    docker 运行nginx并进入容器内部、端口映射
    Docker 国内镜像的配置及使用
    Centos7上安装docker
    富文本编辑器--FCKEditor 上传图片
    在centos7上安装elasticSearch
    Centos7上卸载openJdk安装,安装自己的JDK1.8
    fastdfs 上传图片 完整版
    nginx 启动报错 “/var/run/nginx/nginx.pid" failed” 解决方法
    nginx + fastdfs 的开机自启动
  • 原文地址:https://www.cnblogs.com/DoNetCoder/p/4385257.html
Copyright © 2011-2022 走看看