其他分享
首页 > 其他分享> > 【WPF】 数据模板(DataTemplate)-格式化数据

【WPF】 数据模板(DataTemplate)-格式化数据

作者:互联网

数据模板(DataTemplate)

在.net 中我们可以把2022/8/6格式化为多种样式如:2022-8-6、2022年8月6日等

WPF中扩展了.net格式化方式,通过数据模板(DataTemplate)可以将数据格式化成图片,动画的方式;例如:2022/8/6可以格式化成日历、时钟等。

总之们可以为自己的数据定制显示方式,也就是说虽然某数据数据是一定的,但我们可以做到让它的表现方式多种多样,比如一个时间,在以前我们一般使用一个字符串(比如“12:03”)来显示,但我们为什么就不能显示一个小时钟呢,其实这更合乎情理,利用WPF中的数据模板技术随意并轻松地表现你的数据.

使用范围

数据模板适用于ContentControl类控件与ItemsControl类控件。DataTemplate作用与ContentControl的ContentPresenter,DataTemplate作用与ItemsControl的ItempanlPresenter

用法

用法一、

在窗体资源定义类 和数据模板

 <Window.Resources>
        <x:Array Type="local:Car" x:Key="cars">
            <local:Car Price="100" Year="2000年"/>
            <local:Car Price="120" Year="2001年"/>
            <local:Car Price="140" Year="2002年"/>
            <local:Car Price="200" Year="2004年"/>
        </x:Array>
        <DataTemplate DataType="{x:Type local:Car}">
            <Grid>
                <StackPanel Orientation="Horizontal">
                    <Grid>
                        <Rectangle Height="40" Stroke="Yellow" Fill="Orange" Width="{Binding Price}"/>
                        <TextBlock Text="{Binding Year}"/>
                    </Grid>
                    <TextBlock Text="{Binding Price}" Margin="5,0"/>
                </StackPanel>
            </Grid>
        </DataTemplate>
   <Window.Resources>

在xaml中使用

  <StackPanel  Grid.Column="2">
            <ListBox ItemsSource="{StaticResource cars}"/>
            <ComboBox Style="{DynamicResource ComboBoxStyle1}" ItemsSource="{StaticResource cars}" />
        </StackPanel>

 

后台代码

 public class Car
    {
        public int Price { get; set; }
        public string Year { get; set; }
    }

 DataTemplate中的数据绑定又是怎样实现的呢?

实例中将Student对象的集合绑定到ListBox控件,并且将ItemTemplate属性设置为实例中定义的DataTemplate,那么在创建ListBox 时,将会依次为集合中的每个Student对象创建一个ListBoxItem,并将 ListBoxItem 的 DataContext 设置为相应的Student对象,同时将DataTemplate 中的元素绑定到Student对象的属性,这样DataTemplate中的控件便和对象的属性完成了绑定。

 

标签:控件,Student,2022,WPF,数据,DataTemplate,模板
来源: https://www.cnblogs.com/cdaniu/p/16558268.html