WPF中的MultiBinding

本文详细介绍了在WPF中利用MultiBinding功能实现TextBlock的Text属性绑定到多个数据源,并通过StringFormat和Converter进行复杂数据组合的方法。通过实例演示了如何在XAML中应用这些技术,以便于开发者灵活地根据需求整合数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在WPF中进行数据绑定时,有时会有这种需求:如TextBlock的Text属性,可能希望绑定到两个或以上的数据源,最后得到的Text显示是由这几个数据源按照自己的设计组合而成,即MultiBinding功能。这里记录下两种用法(绑定的概念这里就不列了,直接上关键代码):


1、在XAML中使用MultiBinding+StringFormat

<TextBlock>
    <TextBlock.Text>    
        <MultiBinding StringFormat="{}{0} + {1}">
            <Binding Path="Name" />
            <Binding Path="ID" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

这里的 StringFormat="{}{0} + {1}" ,中的第一个{}是有必要存在的。最后得到的显示也就是<Name>+<ID>。


2、在XAML中使用MultiBinding+Converter


<Windows.Resourses>
     <my:NameConverter x:key="myNameConverter"/>
</Windows.Resourses>
==============================================
<TextBlock>
   <TextBlock.Text>
       <MultiBinding Converter="{StaticResource myNameConverter}"
                     ConverterParameter="FormatLastFirst">
          <Binding Path="FirstName"/>
          <Binding Path="LastName"/>
       </MultiBinding>
   </TextBlock.Text>
</TextBlock>

=======================================================
=======================================================
 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;
            case "FormatNormal":
                default:
                name = values[0] + " " + values[1];
                break;
        }

        return name;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        string[] splitValues = ((string)value).Split(' ');
        return splitValues;
    }
}

在Converter中进行数据源的精细组合。可参见MSDN上的介绍,这儿是另一个例子。


做个记录,免得以后要用时忘了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值