WPF绑定到两个属性

时间:2014-04-22 16:55:23

标签: wpf binding

我有一个具有Message属性的WPF控件。

我目前有这个:

 <dxlc:LayoutItem >
            <local:Indicator Message="{Binding PropertyOne}" />
 </dxlc:LayoutItem>

但我需要将Message属性绑定到两个属性。

显然不可能这样做,但这可以帮助解释我想要的是什么:

<dxlc:LayoutItem >
            <local:Indicator Message="{Binding PropertyOne && Binding PropertyTwo}" />
 </dxlc:LayoutItem>

3 个答案:

答案 0 :(得分:27)

尝试使用MultiBinding

  

描述附加到单个绑定目标属性的Binding对象的集合。

示例:

XAML

<TextBlock>
   <TextBlock.Text>
       <MultiBinding Converter="{StaticResource myNameConverter}"
                     ConverterParameter="FormatLastFirst">
          <Binding Path="FirstName"/>
          <Binding Path="LastName"/>
       </MultiBinding>
   </TextBlock.Text>
</TextBlock>

Converter

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;
    }
}

答案 1 :(得分:23)

<TextBlock.Text>
    <MultiBinding StringFormat="{}{0} {1}">
        <Binding Path="FirstName"/>
        <Binding Path="LastName"/>
    </MultiBinding>
</TextBlock.Text>

答案 2 :(得分:5)

您无法在XAML中执行And操作。

在视图模型类中创建包装属性,该属性将返回两个属性,并与该属性绑定。

public bool UnionWrapperProperty
{
   get
   {
      return PropertyOne && PropertyTwo;
   }
}

<强> XAML

<local:Indicator Message="{Binding UnionWrapperProperty}" />

另一种方法是使用 MultiValueConverter 。将两个属性传递给它,然后从转换器返回和值。