2015-04-16 2 views
0

Можно ли использовать прикрепленное свойство в качестве параметра Multibinding? Как?Можно ли отправить в качестве параметра прикрепленное свойство на многобиблиотеке?

Мне нужно использовать значение прикрепленного свойства, чтобы изменить текст, который я привязываю к TextBlock.

Мой код похож на этот:

TextBlock Связывание

<TextBlock x:Name="myTxt" 
     wpfApplication2:TextBlockAttachedProperties.MyProperty="true"> 
<TextBlock.Text> 
    <MultiBinding Converter="{StaticResource CustomConverter}" Mode="TwoWay" NotifyOnValidationError="true"> 
     <Binding Path="Test"/> 
     <Binding ElementName="myTxt" Path="MyProperty" Mode="OneWay"/> 
    </MultiBinding> 
</TextBlock.Text> 

Мой конвертер:

конвертер Код

public class CustomConverter : IMultiValueConverter 
{ 
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
    { 
     double? value = null; 

     value = values[0] as double?; 
     DependencyProperty myProperty= null; 

     if (values.Count() > 1 && values[1] != DependencyProperty.UnsetValue) 
      //Do something 

     if (myProperty!= null) 
     { 
      //here do something with the value using the attached property 
      var convertedValue = value; 

      return convertedValue; 
     } 

     return value; 
    } 

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) 
    { 
     object[] values = { value }; 
     return values; 
    } 
} 

Однако, поскольку я не знаю, как передать присоединенное свойство в качестве параметра Multibinding, конвертер всегда получает DependencyProperty.UnsetValue.

ответ

1

MultiBinding должен выглядеть, как показано ниже, где имя вложенного свойства записывается в круглых скобках (см PropertyPath XAML Syntax):

<MultiBinding Converter="{StaticResource CustomConverter}"> 
    <Binding Path="Test"/> 
    <Binding Path="(local:TextBlockAttachedProperties.MyProperty)" 
      RelativeSource="{RelativeSource Self}"/> 
</MultiBinding> 

Кроме того, тип свойства в преобразователе значение не DependencyProperty, но только bool (т. е. тип TextBlockAttachedProperties.MyProperty):

bool myProperty = (bool)values[1]; 
+0

Спасибо! Я пробовал что-то подобное, но не совсем правильно, также я был не уверен в типе myProperty внутри конвертера, имеет смысл, что это просто bool. – Dzyann

Смежные вопросы