DataTemplate的用法
WPF 模板主要分为两大类:
1.ControlTemplate: 控件的外观,也就是控件是什么样子。
2.DataTemplate: 是数据内容的表现,一条数据显示成什么样子。
(1)DataTemlate数据模板常用的地方有以下几处:
1.ContentControl的ContentTemplate属性
2.ItemsControl的ItemTemplate属性。
3.GridViewColumn的CellTemplate属性。
2. 实例代码
<Window x:Class="WpfApplication18.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<StackPanel x:Name="stackPanel">
<ListBox Margin="10" ItemsSource="{Binding}" >
<ListBox.ItemTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}" Margin="10"></TextBlock>
<TextBlock Text="{Binding Path=Score}" Margin="10"></TextBlock>
<CheckBox IsChecked="{Binding Path=Gender}" Margin="10"></CheckBox>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication18
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var students = new List<Student>
{
new Student{Name="Jack",Score=80,Gender=true},
new Student{Name="Tom",Score=60,Gender=false},
new Student{Name="David",Score=80,Gender=true},
};
this.stackPanel.DataContext = students;
}
}
public class Student
{
public string Name { get; set; }
public int Score { get; set; }
public bool Gender { get; set; }
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端