博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
无废话WPF系列17:数据模版
阅读量:5954 次
发布时间:2019-06-19

本文共 3179 字,大约阅读时间需要 10 分钟。

WPF模版主要分为俩大类:

ControlTemplate: 控件的外观,也就是控件是什么样子

DataTemplate: 是数据内容的表现,一条数据显示成什么样子

1. 数据模版常用的地方有以下几处:

  • ContentControl的ContentTemplate属性。
  • ItemsControl的ItemTemplate属性。
  • GridViewColumn的CellTemplate属性。

2. 示例

ItemsControl

ContentControl

 

3. DataTemplate除了可以作用在控件上,也可以作用再数据类型上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<
Window 
x:Class="DeepXAML.MainWindow"
        
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        
xmlns:local="clr-namespace:DeepXAML"      
        
xmlns:sys="clr-namespace:System;assembly=mscorlib"
         
xmlns:cl="clr-namespace:System.Collections;assembly=mscorlib"
        
Title="MainWindow" Height="250" Width="450">
    
<
Window.Resources
>
        
<
DataTemplate 
DataType="{x:Type local:Student}">           
            
<
StackPanel 
Orientation="Horizontal" >
            
<
Grid 
Margin="5">               
                
<
Rectangle 
Fill="YellowGreen"  Width="{Binding  Path=Score}"/>
                
<
TextBlock  
Text="{Binding Path=Name}"></
TextBlock
>
            
</
Grid
>
                
<
TextBlock 
Text="{Binding Path=Score}" Margin="5"></
TextBlock
>
            
</
StackPanel
>
        
</
DataTemplate
>
        
<
cl:ArrayList 
x:Key="allStudentsList">
            
<
local:Student 
Name="Jack" Gender="True" Score="80"></
local:Student
>
            
<
local:Student 
Name="Tom" Gender="False" Score="40"></
local:Student
>
            
<
local:Student 
Name="Jack" Gender="True" Score="75"></
local:Student
>
        
</
cl:ArrayList
>
    
</
Window.Resources
>
    
<
StackPanel 
x:Name="stackPanel">
        
<
ListBox 
ItemsSource="{StaticResource ResourceKey=allStudentsList}" FontSize="15"></
ListBox
>
        
<
TextBlock 
Margin="10">Below is combox</
TextBlock
>
        
<
ComboBox 
ItemsSource="{StaticResource ResourceKey=allStudentsList}" FontSize="15"></
ComboBox
>
    
</
StackPanel
>
</
Window
>

 

 

4. DataTemplate作用在XML元素上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<
Window 
x:Class="DeepXAML.MainWindow"
        
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        
xmlns:local="clr-namespace:DeepXAML"      
        
xmlns:sys="clr-namespace:System;assembly=mscorlib"
         
xmlns:cl="clr-namespace:System.Collections;assembly=mscorlib"
        
Title="MainWindow" Height="250" Width="450">
    
<
Window.Resources
>
        
<
DataTemplate 
DataType="Student">           
            
<
StackPanel 
Orientation="Horizontal" >
            
<
Grid 
Margin="5">               
                
<
Rectangle 
Fill="YellowGreen"  Width="{Binding  XPath=@Score}"/>
                
<
TextBlock  
Text="{Binding XPath=@Name}"></
TextBlock
>
            
</
Grid
>
                
<
TextBlock 
Text="{Binding XPath=@Score}" Margin="5"></
TextBlock
>
            
</
StackPanel
>
        
</
DataTemplate
>
        
<
XmlDataProvider 
x:Key="xmlDp" XPath="Students/Student">
            
<
x:XData
>
                
<
Students 
xmlns="">
                    
<
Student 
Name="Jack" Score="80"></
Student
>
                    
<
Student 
Name="Tom" Score="40"></
Student
>
                    
<
Student 
Name="David" Score="75"></
Student
>
                
</
Students
>
            
</
x:XData
>
        
</
XmlDataProvider
>
    
</
Window.Resources
>
    
<
StackPanel 
x:Name="stackPanel">
        
<
ListBox 
ItemsSource="{Binding Source={StaticResource xmlDp}}" FontSize="15"></
ListBox
>
        
<
TextBlock 
Margin="10">Below is combox</
TextBlock
>
        
<
ComboBox 
ItemsSource="{Binding Source={StaticResource xmlDp}}" FontSize="15"></
ComboBox
>
    
</
StackPanel
>
</
Window
>

本文转自敏捷的水博客园博客,原文链接http://www.cnblogs.com/cnblogsfans/archive/2011/02/27/1966172.html如需转载请自行联系原作者

王德水

你可能感兴趣的文章
Java8 本地DateTime API
查看>>
jQuery 增加 删除 修改select option
查看>>
[原][osgearth]osgearthviewer读取earth文件,代码解析(earth文件读取的一帧)
查看>>
springboot 常用插件
查看>>
一个基于特征向量的近似网页去重算法——term用SVM人工提取训练,基于term的特征向量,倒排索引查询相似文档,同时利用cos计算相似度...
查看>>
[转]Newtonsoft.Json高级用法
查看>>
35个Java代码性能优化总结
查看>>
Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简述及技术选型介绍
查看>>
剑指offer——35复杂链表的复制
查看>>
DFI、DPI技术
查看>>
hibernate 执行存储过程 方法
查看>>
RapidIOIP核的验证方法研究_王玉欢
查看>>
崩溃日志的实例
查看>>
base64是啥原理
查看>>
字符串中去除连续相同的字符保留一个
查看>>
实战 Windows Server 2012 群集共享卷
查看>>
CSS 元素超出部分滚动, 并隐藏滚动条
查看>>
【转】文件各种上传,离不开的表单
查看>>
C#中的volatile关键字
查看>>
PHP过滤常用标签的正则表达式
查看>>