wpf学习之(IValueConverter)
学习IValueConverter的使用
public class StatuToNullableBoolConverter : IValueConverter
{ /// <summary>
/// 将Statu转换为bool?
/// </summary>
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
State s = (State)value;
switch (s)
{
case State.Available:
return true;
case State.Locked:
return false;
case State.Unknown:
default:
return null;
}
} /// <summary>
/// 将bool?转换为Statu
/// </summary>
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
bool? nb = (bool)value;
switch (nb)
{
case true:
return State.Available;
case false:
return State.Locked;
default:
return State.Unknown;
}
}
}
class CategoryToSourceConverter : IValueConverter
{ public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Category c = (Category)value;
switch (c)
{
case Category.Bomber:
return @"\Icon\sys_ct_icon\chardevice.ico";
case Category.Fighter:
return @"\Icon\sys_ct_icon\file_broken.ico";
default:
return null;
}
} public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
<Window x:Class="WpfApplication1.WindowConvertListItem"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1.DXSL.BLL"
Title="WindowConvertListItem" Height="300" Width="300">
<Window.Resources>
<local:CategoryToSourceConverter x:Key="cts" />
<local:StatuToNullableBoolConverter x:Key="ctnb" />
</Window.Resources> <Grid>
<StackPanel Background="LightBlue">
<ListBox x:Name="listboxPlane" Height="160" Margin="5,5" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Width="20" Height="20" Source="{Binding Path=Category,Converter={StaticResource cts}}" />
<TextBlock Text="{Binding Path=Name}" Width="60" Margin="80,0" />
<CheckBox IsThreeState="True" IsChecked="{Binding Path= Statu, Converter={StaticResource ctnb}}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button x:Name="btnLoad" Content="load" Height="25" Margin="5,5" Click="btnLoad_Click" />
<Button x:Name="btnSave" Content="save" Height="25" Margin="5,5" Click="btnSave_Click" />
</StackPanel>
</Grid>
</Window>
/// <summary>
/// WindowConvertListItem.xaml 的交互逻辑
/// </summary>
public partial class WindowConvertListItem : Window
{
public WindowConvertListItem()
{
InitializeComponent();
} private void btnLoad_Click(object sender, RoutedEventArgs e)
{
List<Plane> list = new List<Plane>()
{
new Plane (){Category =Category.Bomber,Name="b_1", State =State.Unknown},
new Plane (){Category =Category.Bomber,Name="b_2",State =State.Available},
new Plane (){Category =Category.Fighter,Name="b_3",State =State.Locked},
new Plane (){Category =Category.Fighter,Name="b_4", State =State.Available}
}; this.listboxPlane.ItemsSource = list;
} private void btnSave_Click(object sender, RoutedEventArgs e)
{
StringBuilder str = new StringBuilder(); foreach (Plane item in this.listboxPlane.Items)
{
str.AppendLine(string.Format("{0},{1},{2}", item.Category, item.Name, item.State));
} System.IO.File.WriteAllText("plane.csv", str.ToString());
}
}
/// <summary>
/// 种类
/// </summary>
public enum Category
{
Bomber,
Fighter
} /// <summary>
/// 状态
/// </summary>
public enum State
{
Available,
Locked,
Unknown
} public class Plane
{
public Category Category { get; set; } public string Name { get; set; } public State State { get; set; }
}
转载:http://www.cnblogs.com/-ShiL/archive/2013/03/14/Star201303141456.html
wpf学习之(IValueConverter)的更多相关文章
- WPF学习(8)数据绑定
说到数据绑定,其实这并不是一个新的玩意儿.了解asp.net的朋友都知道,在asp.net中已经用到了这个概念,例如Repeater等的数据绑定.那么,在WPF中的数据绑定相比较传统的asp.net中 ...
- WPF学习笔记(8):DataGrid单元格数字为空时避免验证问题的解决
原文:WPF学习笔记(8):DataGrid单元格数字为空时避免验证问题的解决 如下图,在凭证编辑窗体中,有的单元格不需要数字,但如果录入数字后再删除,会触发数字验证,单元格显示红色框线,导致不能执行 ...
- WPF学习07:MVVM 预备知识之数据绑定
MVVM是一种模式,而WPF的数据绑定机制是一种WPF内建的功能集,两者是不相关的. 但是,借助WPF各种内建功能集,如数据绑定.命令.数据模板,我们可以高效的在WPF上实现MVVM.因此,我们需要对 ...
- WPF学习(8)数据绑定 https://www.cnblogs.com/jellochen/p/3541197.html
说到数据绑定,其实这并不是一个新的玩意儿.了解asp.net的朋友都知道,在asp.net中已经用到了这个概念,例如Repeater等的数据绑定.那么,在WPF中的数据绑定相比较传统的asp.net中 ...
- 【WPF学习】第五十章 故事板
正如上一章介绍,WPF动画通过一组动画类(Animation类)表示.使用少数几个熟悉设置相关信息,如开始值.结束值以及持续时间.这显然使得它们非常适合于XAML.不是很清晰的时:如何为特定的事件和属 ...
- WPF学习开发客户端软件-任务助手(下 2015年2月4日代码更新)
时光如梭,距离第一次写的 WPF学习开发客户端软件-任务助手(已上传源码) 已有三个多月,期间我断断续续地对该项目做了优化.完善等等工作,现在重新向大家介绍一下,希望各位可以使用,本软件以实用性为主 ...
- WPF学习05:2D绘图 使用Transform进行控件变形
在WPF学习04:2D绘图 使用Shape绘基本图形中,我们了解了如何绘制基本的图形. 这一次,我们进一步,研究如何将图形变形. 例子 一个三角形,经Transform形成组合图形: XAML代码: ...
- WPF学习之资源-Resources
WPF学习之资源-Resources WPF通过资源来保存一些可以被重复利用的样式,对象定义以及一些传统的资源如二进制数据,图片等等,而在其支持上也更能体现出这些资源定义的优越性.比如通过Resour ...
- WPF学习之路初识
WPF学习之路初识 WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...
- WPF学习拾遗(二)TextBlock换行
原文:WPF学习拾遗(二)TextBlock换行 下午在帮组里的同事解决一个小问题,为了以后方便,把就把它收集一下吧. 新建一个TextBlock作为最基础的一个控件,他所携带的功能相对于其他的控件要 ...
随机推荐
- Java基础——深入剖析Java中的装箱和拆箱
(转自:http://www.cnblogs.com/dolphin0520/p/3780005.html) 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若 ...
- hdu1084
#include<iostream> #include<algorithm> using namespace std; #define N 101 struct node { ...
- Smtp错误码
Smtp错误码列表及相关原因 错误总表 420 1. Timeout Communication Problem Encountered During Transmission. Thie Is a ...
- If,for,range混合使用笔记-(VBA视频教程2:使用IF进行逻辑判断)
-- 新建表格:#单元格a1-a100全部等于1的代码 Sub test() Dim i As Integer For i = To Range( Next End Sub -- 新建表格:#单元格a ...
- BKReboot
1: 重启第一台服务器(中控机),容易引起故障的组件有: appt.bkdata, 重启顺序: bkdata->appt. 2: 重启第二台服务器,容易引起故障的组件有:appo.saas-o, ...
- (linux)修改MySQL密码方法
1,在/etc/my.cnf末尾 加入skip-grant-tables,保存,跳过身份验证. 2,重启MySql,使刚才修改的配置生效. 3,终端输入mysql,然后再输入use mysql; 4 ...
- (PHP)redis Set(集合)操作
/** * * Set操作 * 集合命令 * 保证数据的唯一 * 不保证顺序 * */ //将一个元素加入集合,已经存在集合中的元素则忽略.若集合不存在则先创建,若key不是集合类型则返回false, ...
- Baidu - Echarts 地图实例测试,并绘制平滑圆弧路径
百度Echarts实例地址: http://echarts.baidu.com/examples.html 同事想做一个地图,地图上的几个点通过动态的线连接起来.但是在实例里没找到类似的. 然后仔细分 ...
- 如何看待 Kotlin 成为 Android 官方支持开发语言
Google IO 2017宣布了 Kotlin 会成为 Android 官方开发语言.一时间朋友圈和Android圈被各种刷屏.当然我也顺势而为发布了一篇的文章<为什么我要改用Kotlin&g ...
- C++基本变量类型
算数类型表 类型 含义 最小存储空间 取值范围 bool 布尔型 – char 字符型 8位 -2^7 ~ 2^7-1 wchar_t 宽字符型 16位 short 短整型 16位 -2^15 ...