WPF:Data Template

翻译 2017年04月17日 10:50:41

  Data Template 用于在一个或者多个控件上绑定并映射数据显示,适用于内容控件或者条目控件, Data Template 可以被用在两个地方:

  1. 作为ContentControl的ContentTemplate 属性的值(例如:label)
  2. 作为ItemsControl的ItemTemplate属性的值(例如:ListBox)
 下面是一个作为Lable控件的ContentTemplate的例子,假定存在数据类Temp:
<Label Name="lblPerson">
    <Label.ContentTemplate>
        <DataTemplate>
            <Border BorderThickness="2" BorderBrush="DarkBlue">
                <StackPanel Orientation="Vertical">
                    <StackPanel Orientation="Horizontal">
                        <Label Content="{Binding Path=Temp.FirstName}"/>
                        <Label Content="{Binding Path=Temp.LastName}" FontWeight="Bold"/>
                    </StackPanel>
                    <Label Content="{Binding Path=Temp.BirthYear}" FontStyle="Italic"/>
                </StackPanel>
            </Border>
        </DataTemplate>
    </Label.ContentTemplate>
</Label>

这是一个作为ListBox控件的ItemTemplate的例子,假定存在数据集合ActorList

<ListBox Margin="15" Width="270" Height="320"
       ItemsSource="{Binding ActorList}">
      <ListBox.ItemTemplate>
          <DataTemplate>
              <StackPanel Orientation="Horizontal">
                  <Image Source="{Binding Image}" Height="80"/>
                  <StackPanel Margin="5">
                      <TextBlock Text="{Binding FullName}" FontSize="12" FontWeight="Bold"/>
                      <TextBlock Text="{Binding Dates}"/>
                      <TextBlock Text="{Binding KnownFor}" Margin="0,5,0,0" FontStyle="Italic"/>
                  </StackPanel>
                  <Label Content="Dead Fred !" Foreground="Red"
                         FontWeight="Bold"
                         Visibility="{Binding Converter={StaticResource deadFredConverter}}"/>
              </StackPanel>
          </DataTemplate>
      </ListBox.ItemTemplate>
  </ListBox>

  ContentTemplate 与ItemTemplate 属性经常被用在以下方面:
  1. ContentTemplate 作为ContentPresenter内容,控件的控件模板中默认包含ContentPresenter
  2. ItemTemplate 作为由ItemsPresenter提供的每一条目的内容模板。

 下面是一个Label控件的默认控件模板代码片段,能够发现它包含一个ContentPresenter作为控件模板的内容模板。

<ControlTemplate TargetType="{x:Type Label}">
    <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="True">
        <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
    </Border>
    <ControlTemplate.Triggers>
        <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>


wpf control template 示例

  • 2010年09月24日 22:35
  • 42KB
  • 下载

WPF Template模版之Style【四】

Style直译过来就是“风格”,“样式”。拿人来举例,人的风格指静态的外观和行为举止。同样一个人,如果留平头、穿上足球队的队服、脚蹬战靴,看上去就是一名叱咤球场的运动员;如果让他换一身笔挺的西装、穿上...

WPF 构建自定义控件 模板Template

一、自定义 按钮控件 模板 效果: XAML:         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation...

如何实现具有层次结构的 TreeView <二> (WPF/TreeView/Style/Template)

简单介绍自关联表的创建和应用,以及如何为应用程序添加 LINQ to SQL (DataContext) 数据源。...
  • qqamoon
  • qqamoon
  • 2011年08月05日 08:43
  • 3075

WPF Template模版之DataTemplate与ControlTemplate【一】

WPF系统不但支持传统的Winfrom编程的用户界面和用户体验设计,更支持使用专门的设计工具Blend进行专业设计,同时还推出了以模板为核心的新一代设计理念。 1. 模板的内涵     作为表现形式,...

WPF学习笔记(1):样式(Style)与模板(Template)

 一、WPF样式  类似于Web应用程序中的CSS,在WPF中可以为控件定义统一的样式(Style)。样式属于资源的一种,例如为Button定义统一的背景颜色和字体:  1:    2:     ...

WPF Template模版之寻找失落的控件【三】

“井水不犯河水”常用来形容两个组织之间界限分明、互不相干,LogicTree与控件内部这颗小树之间就保持着这种关系。换句话说,如果UI元素树上有个X:Name=“TextBox1”的控件,某个控件内部...

WPF/Silverlight Template使用及总结

WPF/Silverlight 中的控件都有Style和Template两种属性。前者解释为样式,是用来改变控件原有属性的,比如 Button 控件的(Width,Height,Background ...

WPF中各个Template的分析

--转载 在使用TabControl、ListView、Menu、TreeView的时候被各种Template搞得头昏眼花,决心把这个问题搞清楚,究竟什么时候该用什么Template?这是个麻烦...

WPF Template模版之DataTemplate与ControlTemplate的关系和应用【二】

1. DataTemplate和ControlTemplate的关系     学习过DataTemplate和ControlTemplate,你应该已经体会到,控件只是数据的行为和载体,是个抽象的概...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WPF:Data Template
举报原因:
原因补充:

(最多只允许输入30个字)