当前位置: 首页 > news >正文

wpf DataTemplate 和 ControlTemplate 区别,应用举例

 

在WPF中,模版(ControlTemplate ) ControlTemplate用于定义控件的内部结构和外观,它决定了控件的“长成什么样子”,并允许开发者在控件原有的内部逻辑基础上扩展自己的逻辑。DataTemplate则专注于数据内容的展示方式,即数据如何被可视化呈现。

示例实现
1. 定义歌曲类
首先,我们定义一个Song类,用于表示歌曲数据。public class Song  
{  public string Title { get; set; }  public string Artist { get; set; }  // 可以添加更多属性,如专辑、时长等  
}
2. 创建DataTemplate
在XAML中,我们为Song类创建一个DataTemplate,用于定义每首歌曲在播放列表中的显示方式。<Window.Resources>  <DataTemplate x:Key="SongDataTemplate">  <StackPanel Orientation="Horizontal" Margin="5">  <TextBlock Text="{Binding Title}" FontSize="16" FontWeight="Bold"/>  <TextBlock Text=" - " Margin="2,0,0,0"/>  <TextBlock Text="{Binding Artist}" FontSize="14"/>  </StackPanel>  </DataTemplate>  
</Window.Resources>3. 创建ControlTemplate
接下来,我们为播放列表控件(例如ListBox)创建一个ControlTemplate,以改变其整体外观。这里为了简化,我们只改变背景色和滚动条样式,但你可以根据需要添加更多自定义内容
<Window.Resources>  <!-- 之前的DataTemplate定义 -->  <ControlTemplate x:Key="PlaylistControlTemplate" TargetType="ListBox">  <Border Background="LightGray" Padding="10">  <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">  <ItemsPresenter/>  </ScrollViewer>  </Border>  </ControlTemplate>  
</Window.Resources>4. 应用Template
现在,我们在XAML布局中应用这两个模版。首先,为ListBox设置ControlTemplate,然后为其ItemTemplate设置之前定义的DataTemplate。
<Grid>  <ListBox x:Name="PlaylistListBox"  Template="{StaticResource PlaylistControlTemplate}"  ItemTemplate="{StaticResource SongDataTemplate}">  <!-- 这里通过数据绑定填充歌曲列表 -->  </ListBox>  
</Grid>


http://www.mrgr.cn/news/5692.html

相关文章:

  • 火绒使用详解 为什么选择火绒?使用了自定义规则及其高级功能的火绒,为什么能吊打卡巴斯基,360,瑞星,惠普联想戴尔的电脑管家等?
  • 官网下载mysql源代码安装包步骤(旧档案-版本下载方式)
  • 宠物毛发会导致过敏性哮喘吗?养猫推荐吸毛空气净化器
  • 《AI办公类工具PPT系列之一——​比格AI PPT》
  • OBIEE 12C 叙述视图:excel导出合并单元格
  • Mac安装多版本JDK,如何兼容
  • 【clickhouse】 使用 SQLAlchemy 连接 ClickHouse 数据库的完整指南
  • 文献翻译什么软件好?文献翻译全文软件推荐这5个
  • python 实现 qubit measure量子位测量算法
  • 表格滚动分页查询
  • 【Hot100】LeetCode—114. 二叉树展开为链表
  • 图像处理 -- 仿射变换之Affine Transformation
  • softmax多分类及多任务示例
  • 防范小程序隐私合规风险,筑牢用户信任防线
  • 海康VisionMaster使用学习笔记6-图像拼接
  • Ant-Design-Vue快速上手指南 + 排坑
  • 【C语言】关键字——const
  • 基于TCP服务的TLV编解码
  • OCR文字识别接口如何用Java进行调用
  • Android UI:PopupWindow:API