wpf学习笔记 数据转换

在前面的例子里,我们做了一个显示滑块进度的小程序:

 

在这里有一个小小的问题是,TextBox的Text属性是string类型,而滑块的Value应该是double类型。这里.net为我们自动的做了一类型转换,但在一些复杂的逻辑中,就必须自定义一些Converter。 

举个很简单的例子,我们在数据库中存储性别的时候一般会用bit类型,或男或女,双性人估计现在还不是法律能容忍的。但是1/0值反映到前台,就需要显示为男/女,这里我们用到一个SexConverter来实现。

wpf通过继承IValueConverter接口,并重写Convert与ConverBack方法,顾名思义,这两个方法一个是正向的,一个是反向,不过目前我还没有遇到用上Back的机会。

代码很简单:

xaml代码:

< Window x:Class = " Data_Converter.SexConveter "
        xmlns
= " http://schemas.microsoft.com/winfx/2006/xaml/presentation "
        xmlns:x
= " http://schemas.microsoft.com/winfx/2006/xaml "
        xmlns:local
= " clr-namespace:Data_Converter "
        Title
= " SexConventer "  Height = " 300 "  Width = " 300 " >
    
< Window.Resources >
        
< local:BitToSexConverter x:Key = " Bts " ></ local:BitToSexConverter >
    
</ Window.Resources >
    
< StackPanel x:Name = " sp_List "  Background = " WhiteSmoke "  Margin = " 5 " >
        
< ListBox Name = " lb_List " >
            
< ListBox.ItemTemplate >
                
< DataTemplate >
                    
< StackPanel Orientation = " Horizontal "  Margin = " 5 " >
                        
< CheckBox Margin = " 5 " ></ CheckBox >
                        
< TextBlock Text = " {Binding Path=Name} "  Width = " 80 "  Margin = " 5 " />
                        
< TextBlock Text = " {Binding Path=Sex, Converter={StaticResource Bts}} "  Width = " 200 "  Margin = " 5 " />
                    
</ 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.Shapes;

namespace  Data_Converter
{
    
///   <summary>
    
///  SexConvet.xaml 的交互逻辑
    
///   </summary>
     public   partial   class  SexConveter : Window
    {
        
public  SexConveter()
        {
            InitializeComponent();
            List
< Student >  lst  =   new  List < Student > ()
            {
                
new   Student(){Name = " 李雷 " ,Sex = true },
                
new   Student(){Name = " 韩梅梅 " ,Sex = false },
                
new   Student(){Name = " Tom " ,Sex = true },
                
new   Student(){Name = " Lily " ,Sex = false },
            };
            
this .lb_List.ItemsSource  =  lst;
        }
        
public   class  Student
        {
            
public   string  Name {  get set ; }
            
public   bool  Sex {  get set ; }
        }
    }

    
public   class  BitToSexConverter : IValueConverter
    {
        
public   object  Convert( object  value, Type targetType,  object  parameter, System.Globalization.CultureInfo culture)
        {
            
bool  sex  =  ( bool )value;
            
if  (sex)  return   " " ;
            
else   return   " " ;
        }
        
public   object  ConvertBack( object  value, Type targetType,  object  parameter, System.Globalization.CultureInfo culture)
        {
            
throw   new  NotImplementedException();
        }
    }

 }

 

 效果如图:

 

转载于:https://www.cnblogs.com/shen6041/archive/2011/03/24/1993325.html

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值