Подтвердить что ты не робот

WPF привязка к двум свойствам

У меня есть элемент управления WPF, обладающий свойством Message.

В настоящее время у меня есть это:

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

Но мне нужно, чтобы свойство Message было привязано к двум свойствам.

Очевидно, этого нельзя сделать, но это может помочь объяснить, что я хочу:

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

Ответ 1

Попробуйте использовать MultiBinding:

Описывает набор объектов привязки, привязанных к единственному целевому объекту привязки.

Пример:

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

Ответ 2

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

Ответ 3

Вы не можете выполнить операцию And в XAML.

Создайте свойство wrapper в классе модели вашего представления, который вернет и из двух свойств и свяжется с этим свойством.

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

XAML

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

Другим подходом было бы использовать MultiValueConverter. Передайте ему два свойства и верните И значение из конвертера.