无废话WPF系列11: 数据转换

简介:

有时我们展现的数据,需要进行转换,比如如果一个学生的成绩过了60,我们显示一个Pass的图片。

XAML:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
< 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"
         Title="MainWindow" Height="250" Width="450">
     < Window.Resources >
         < local:ScoreToImageConverter  x:Key="sti"></ local:ScoreToImageConverter >
     </ Window.Resources >
     < StackPanel >
         < ListBox  x:Name="listBoxStudents" Margin="10">
             < ListBox.ItemTemplate >
                 < DataTemplate >
                     < StackPanel  Orientation="Horizontal">
                         < TextBlock  Text="{Binding Path=Name}"></ TextBlock >                       
                         < Image  Source="{Binding Path=Score,Converter={StaticResource sti}}" Height="20"></ Image >
                     </ StackPanel >
                 </ DataTemplate >
             </ ListBox.ItemTemplate >
         </ ListBox >
     </ StackPanel >
</ Window >

 

后台代码:

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
34
35
36
37
38
39
40
41
42
43
44
using  System;
using  System.Collections.Generic;
using  System.Windows;
using  System.Windows.Data;
using  System.Windows.Documents;
 
namespace  DeepXAML
{
     public  partial  class  MainWindow : Window
     {
         public  MainWindow()
         {
             InitializeComponent();
             List<Student> students = new  List<Student>{
              new  Student{ Name= "Jack" , Score=90},
               new  Student{Name= "Tom" , Score=30},
               new  Student{ Name= "David" , Score=80}
             };
             this .listBoxStudents.ItemsSource = students;
         }
 
     }
     public  class  Student
     {
         public  string  Name { get ; set ; }
         public  double  Score { get ; set ; }
     }
     public  class  ScoreToImageConverter : IValueConverter
     {
         public  object  Convert( object  value, Type targetType, object  parameter,
             System.Globalization.CultureInfo culture)
         {
             double  score = ( double )value;
 
             return  score >= 60 ? @"\images\pass.gif"  : @"\images\nopass.gif" ;
         }
 
         public  object  ConvertBack( object  value, Type targetType, object  parameter,
             System.Globalization.CultureInfo culture)
         {
             throw  new  NotImplementedException();
         }
     }
}

 

运行结果

image

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


王德水

相关文章
|
5月前
|
算法 C# UED
浅谈WPF之控件模板和数据模板
WPF不仅支持传统的Windows Forms编程的用户界面和用户体验设计,同时还推出了以模板为核心的新一代设计理念。在WPF中,通过引入模板,将数据和算法的“内容”和“形式”进行解耦。模板主要分为两大类:数据模板【Data Template】和控件模板【Control Template】。
96 8
WPF 点击 Datagrid 中的TextBox 控件获取其所在行的数据
WPF 点击 Datagrid 中的TextBox 控件获取其所在行的数据
WPF中如何获取选中行/单元格所在行的数据
WPF中如何获取选中行/单元格所在行的数据
|
前端开发 C#
WPF 之 数据与命令绑定 (MVVM方式)
WPF 之 数据与命令绑定 (MVVM方式)
160 0
WPF 之 数据与命令绑定 (MVVM方式)
|
前端开发 C#
WPF 自定义的图表(适用大量数据绘制)下
原文:WPF 自定义的图表(适用大量数据绘制)下 上一篇文章中讲了WPF中自定义绘制大量数据的图标,思路是先将其绘制在内存,然后一次性加载到界面,在后续的调试过程中,发现当数据量到达10W时,移动鼠标显示数据有明显的延迟。
1395 0
WPF ComboBox 数据模板
WPF中的控件,有不少都是需要绑定数据的,例如ComboBox控件可以绑定数据,从下拉列表中进行选择。默认情况下,ComboBox控件绑定的数据从显示上比较单一,只能显示固定的文本信息。而为了更好的突出数据展现效果,这里需要使用到WPF中的另一种强大的功能,即数据模板(DataTemplate )
1113 0
WPF ComboBox 数据模板
|
前端开发 C# 架构师
【我们一起写框架】MVVM的WPF框架(三)—数据控件
这世上,没人能一次性写出完美无缺的框架;因为,任何一个框架都需要项目的淬炼,然后才能升华,趋近完美。 所以,框架是个反复修改的东西,最终形成的东西。 如果你学了一点技术,觉得自己可以写出框架了,觉得自己有架构师的能力,然而自己总是怀才不遇——那一定是你的错觉。
1148 0
|
C# 前端开发
WPF 自定义的图表(适用大量数据绘制)
原文:WPF 自定义的图表(适用大量数据绘制) 在WPF中绘制图表比较简单,有很多的第三方控件,但是在绘制大量数据的时候,就显得有些吃力,即便是自己用StreamGeometry画也达不到理想的效果,要达到绘制大量数据而不会顿卡现象,只有一个途径,就是首先在内存中绘制好所有的图形,再一次性加载(或者说绘制)到界面控件Canvas或Grid中。
1149 0
|
C#
潜移默化学会WPF(难点控件treeview)--改造TreeView(CheckBox多选择版本),递归绑定数据
原文:潜移默化学会WPF(难点控件treeview)--改造TreeView(CheckBox多选择版本),递归绑定数据 目前自己对treeview的感慨很多 今天先讲 面对这种 表结构的数据 的其中一种绑定方法,后面多几列其他属性都没关系,例如多个字段, 1  A  0 2  B  0 3  C  0 4  D  1 5  E  2 6  F  4 7  G 1 .
2285 0