如何实现WPF转换器Converter对多值数据的转换处理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计312个文字,预计阅读时间需要2分钟。
定义一个多值转换器,用于处理数值区间。
csharpusing System;using System.Globalization;using System.Windows.Data;using System.Collections.Generic;
namespace demo_business.Converters{ public class NumIntervalConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { if (values.Length <2) return 无效的输入;
try { var min=Convert.ToDouble(values[0]); var max=Convert.ToDouble(values[1]); return ${min}-{max}; } catch (Exception) { return 转换错误; } }
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { if (value is string) { var split=((string)value).Split('-'); if (split.Length==2) { return new object[] { Convert.ToDouble(split[0]), Convert.ToDouble(split[1]) }; } } return null; } }}
定义多值处理方法。
using System;
using System.Globalization;
using System.Windows.Data;
namespace demo_business.Converters
{
public class NumIntervalConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values == null || values.Length == 0)
{
return null;
}
//组装展示数据
string value = "数据拼接: "+ values[0].ToString() + values[1].ToString();
return value;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
引用和使用
<Page x:Class="XXXXXXX.Views.Pages.XXXXXXXView"
xmlns:localConverter="clr-namespace:demo.Converters"
mc:Ignorable="d"
Title="MainLeftBottomView">
<Page.Resources>
<localConverter:NumIntervalConverter x:Key="NumIntervalConverter"/>
</Page.Resources>
<Grid>
<Label Margin="20,0,0,0" >
<Label.Content>
<MultiBinding Converter="{StaticResource NumIntervalConverter}">
<Binding Path="OperationInfo.MinNum"/>
<Binding Path="OperationInfo.MaxNum"/>
</MultiBinding>
</Label.Content>
</Label>
</Grid>
</Page>
本文共计312个文字,预计阅读时间需要2分钟。
定义一个多值转换器,用于处理数值区间。
csharpusing System;using System.Globalization;using System.Windows.Data;using System.Collections.Generic;
namespace demo_business.Converters{ public class NumIntervalConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { if (values.Length <2) return 无效的输入;
try { var min=Convert.ToDouble(values[0]); var max=Convert.ToDouble(values[1]); return ${min}-{max}; } catch (Exception) { return 转换错误; } }
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { if (value is string) { var split=((string)value).Split('-'); if (split.Length==2) { return new object[] { Convert.ToDouble(split[0]), Convert.ToDouble(split[1]) }; } } return null; } }}
定义多值处理方法。
using System;
using System.Globalization;
using System.Windows.Data;
namespace demo_business.Converters
{
public class NumIntervalConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values == null || values.Length == 0)
{
return null;
}
//组装展示数据
string value = "数据拼接: "+ values[0].ToString() + values[1].ToString();
return value;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
引用和使用
<Page x:Class="XXXXXXX.Views.Pages.XXXXXXXView"
xmlns:localConverter="clr-namespace:demo.Converters"
mc:Ignorable="d"
Title="MainLeftBottomView">
<Page.Resources>
<localConverter:NumIntervalConverter x:Key="NumIntervalConverter"/>
</Page.Resources>
<Grid>
<Label Margin="20,0,0,0" >
<Label.Content>
<MultiBinding Converter="{StaticResource NumIntervalConverter}">
<Binding Path="OperationInfo.MinNum"/>
<Binding Path="OperationInfo.MaxNum"/>
</MultiBinding>
</Label.Content>
</Label>
</Grid>
</Page>

