【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中的控件便和对象的属性完成了绑定。

 

posted @   小林野夫  阅读(552)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
原文链接:https://www.cnblogs.com/cdaniu/
点击右上角即可分享
微信分享提示