接上一篇,上面已经完成的数据的绑定,但如果想实现绑定之前对数据进行数据或加条件判断的话,可以使用 IValueConverter
下面实现一下:
一、增加一个IValueConverter的实现类
代码如下,代码的意义是:只显示500以上的数字,500以下的统统显示为0
using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Windows.Data; namespace WpfTestBindStaticField { public class MyConvert : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null || !(value is int)) { return 0; } if ((int)value > 500) { return value; } else { return 0; } } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } }
二、修改前台代码
<Window x:Class="WpfTestBindStaticField.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfTestBindStaticField" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800" Loaded="Window_Loaded"> <Window.Resources> <local:StaticList x:Key="statisList"/> <local:MyConvert x:Key="myConvert"/> </Window.Resources> <Grid> <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="60" Text="{Binding Source={StaticResource statisList},Path=TestValue,Converter={StaticResource myConvert}}"/> </Grid> </Window>
增加了上面标红的代码:Converter={StaticResource myConvert}
结果如下: