无废话WPF系列11: 数据转换
2011-02-19 20:15 敏捷的水 阅读(1307) 评论(0) 编辑 收藏 举报有时我们展现的数据,需要进行转换,比如如果一个学生的成绩过了60,我们显示一个Pass的图片。
XAML:
<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>
后台代码:
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(); } } }
运行结果
扫码关注公众号,了解更多管理,见识,育儿等内容
作者: 王德水
出处:http://www.cnblogs.com/cnblogsfans
版权:本文版权归作者所有,转载需经作者同意。
出处:http://www.cnblogs.com/cnblogsfans
版权:本文版权归作者所有,转载需经作者同意。