WPF 使用值转换器进行绑定数据的转换IValueConverter
2011-08-12 08:56
661 查看
有的时候,我们想让绑定的数据以其他的格式显示出来,或者转换成其他的类型,我们可以使用值转换器来实现.
比如我数据中保存了一个文件的路径”c:\abc\abc.exe”,但是我想让他在前台列表中显示为”abc.exe”.
首先我们先建一个IvalueConverter接口的类.
classGetFileName:IValueConverter
{
//Convert方法用来将数据转换成我们想要的显示的格式
publicobjectConvert(objectvalue,TypetargetType,objectparameter,CultureInfoculture)
{
FileInfofi=newFileInfo((string)value);
returnfi.Name;
}
//ConvertBack方法将显示值转换成原来的格式,因为我不需要反向转换,所以直接抛出个异常
publicobjectConvertBack(objectvalue,TypetargetType,objectparameter,CultureInfoculture)
{
thrownewNotImplementedException();
}
}
为了使用这个转换器,我们要将项目的名称空间映射到xaml中,比如我项目名字为自动更新,用local作为空间名称前缀
xmlns:local="clr-namespace:自动更新"
<Window.Resources>
<local:GetFileNamex:Key="GetFileName"></local:GetFileName>
</Window.Resources>
<Window.Resources>
<local:GetFileNamex:Key="GetFileName"></local:GetFileName>
</Window.Resources>
现在我们去绑定数据的地方使用StaticResource来指向转换器
<TextBlock>
<TextBlock.Text>
<BindingPath="FileName">
<Binding.Converter>
<local:GetFileName></local:GetFileName>
</Binding.Converter>
</Binding>
</TextBlock.Text>
</TextBlock>
原文:http://blog.csdn.net/slzlren/article/details/6595905
Forexample:
namespaceOppositeValueConverterDemo
{
publicclassOppConverter:IValueConverter
{
#regionIValueConverter成员
objectIValueConverter.Convert(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture)
{
if(targetType!=typeof(bool))
{
thrownewInvalidOperationException("Thetargetmustbeaboolean");
}
return!(bool)value;
}
objectIValueConverter.ConvertBack(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture)
{
thrownewNotImplementedException();
}
#endregion
}
}
下面是XAML代码:
<Grid>
<Grid.Resources>
<wf:OppConverterx:Key="OppositeConverter"/>
</Grid.Resources>
<StackPanelMargin="10,10,10,10">
<RadioButtonx:Name="myRadio"IsChecked="True">Testconvert</RadioButton>
<RadioButtonHeight="20"Name="redYellow">Yellow</RadioButton>
<RadioButtonHeight="20"Name="redGreen"VerticalAlignment="Bottom">Green</RadioButton>
<TextBoxText="SampleText"IsEnabled="{BindingElementName=myRadio,Path=IsChecked,Converter={StaticResourceOppositeConverter}}"/>
</StackPanel>
</Grid>
效果如下图:当Testconvert选中时,TextBoxSampleText的InEnable=false
比如我数据中保存了一个文件的路径”c:\abc\abc.exe”,但是我想让他在前台列表中显示为”abc.exe”.
首先我们先建一个IvalueConverter接口的类.
classGetFileName:IValueConverter
{
//Convert方法用来将数据转换成我们想要的显示的格式
publicobjectConvert(objectvalue,TypetargetType,objectparameter,CultureInfoculture)
{
FileInfofi=newFileInfo((string)value);
returnfi.Name;
}
//ConvertBack方法将显示值转换成原来的格式,因为我不需要反向转换,所以直接抛出个异常
publicobjectConvertBack(objectvalue,TypetargetType,objectparameter,CultureInfoculture)
{
thrownewNotImplementedException();
}
}
为了使用这个转换器,我们要将项目的名称空间映射到xaml中,比如我项目名字为自动更新,用local作为空间名称前缀
xmlns:local="clr-namespace:自动更新"
现在我们去绑定数据的地方使用StaticResource来指向转换器
<TextBlock>
<TextBlock.Text>
<BindingPath="FileName">
<Binding.Converter>
<local:GetFileName></local:GetFileName>
</Binding.Converter>
</Binding>
</TextBlock.Text>
</TextBlock>
原文:
Forexample:
{
publicclassOppConverter:IValueConverter
{
#regionIValueConverter成员
objectIValueConverter.Convert(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture)
{
if(targetType!=typeof(bool))
{
thrownewInvalidOperationException("Thetargetmustbeaboolean");
}
return!(bool)value;
}
objectIValueConverter.ConvertBack(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture)
{
thrownewNotImplementedException();
}
#endregion
}
}
<Grid.Resources>
<wf:OppConverterx:Key="OppositeConverter"/>
</Grid.Resources>
<StackPanelMargin="10,10,10,10">
<RadioButtonx:Name="myRadio"IsChecked="True">Testconvert</RadioButton>
<RadioButtonHeight="20"Name="redYellow">Yellow</RadioButton>
<RadioButtonHeight="20"Name="redGreen"VerticalAlignment="Bottom">Green</RadioButton>
<TextBoxText="SampleText"IsEnabled="{BindingElementName=myRadio,Path=IsChecked,Converter={StaticResourceOppositeConverter}}"/>
</StackPanel>
</Grid>
效果如下图:当Testconvert选中时,TextBoxSampleText的InEnable=false
相关文章推荐
- WPF备忘录(3)如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter
- 如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter
- WPF中绑定转换IValueConverter
- WPF中使用MVVM模式进行简单的数据绑定
- [转载] 使用IValueConverter接口实现自定义绑定数据的显示方式
- sql使用cast进行数据类型转换示例
- WPF默认数据绑定可以自动进行数据格式验证
- 使用自定义的数据源进行DataGrid控件的数据绑定
- WPF数据绑定(使用C#代码的方式)
- Android采用ListView实现数据列表显示1-使用SimpleCursorAdapter进行数据绑定
- WPF and Silverlight 学习笔记(二十一):数据绑定值的自定义转换
- [转]WPF and Silverlight 学习笔记(二十五):使用CollectionView实现对绑定数据的排序、筛选、分组
- WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证
- 【WPF】 使用值转换器 处理 前台数据
- WP7 使用数据模板DataTemplate进行数据绑定
- 使用WPF绑定层次结构数据
- 使用ajax局部刷新gridview进行数据绑定示例
- 如何使用常用的6种方式对数据进行转换(二)
- WPF中在listview进行数据绑定,根据绑定数据调整一列的显示
- WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证