案例地址:GitHub - microsoft/WPF-Samples: Repository for WPF related samples
一、运行界面
二、案例功能描述
实现控件属性的多绑定
知识点:
1、MultiBinding:多绑定
2、IMultiValueConverter:多值类型转换器接口
3、ConverterParametr:类型转换器参数
三、分析代码
1、实现多绑定数据模板
<DataTemplate x:Key="NameItemTemplate">
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource MyNameConverter}">
<Binding Path="FirstName"/>
<Binding Path="LastName"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
2、自定义多绑定中用到的类型转换器
继承IMultiValueConverter接口
public class NameConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
string name;
switch ((string) parameter)
{
case "FormatLastFirst":
name = values[1] + ", " + values[0];
break;
default:
name = values[0] + " " + values[1];
break;
}
return name;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
var splitValues = ((string) value).Split(' ');
return splitValues;
}
}
3、控件属性多绑定,并设置类型转换器的参数
<TextBlock Name="textBox1" DataContext="{StaticResource NameListData}">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource MyNameConverter}"
ConverterParameter="FormatNormal">
<Binding Path="FirstName"/>
<Binding Path="LastName"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>