Как передать постоянное значение для 1 привязки в multi-binding?

У меня есть мульти-привязки, как

<TextBlock>
    <TextBlock.Text>
        <MultiBinding Converter="{StaticResource myConverter}">
            <Binding Path="myFirst.Value" />
            <Binding Path="mySecond.Value" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

и я хочу передать фиксированное значение, например "123", в одну из двух Привязок выше. Как это сделать с помощью XAML?

4 ответов


если ваше значение просто string, вы можете указать его как константу в Source свойства привязки. Если это любой другой примитивный тип данных, необходимо определить статический ресурс и ссылаться на это.

определение sys пространство имен в корне XAML, чтобы указать на System в mscorlib, и должно работать следующее:

<TextBlock>
  <TextBlock.Resources>
    <sys:Int32 x:Key="fixedValue">123</sys:Int32>
  </TextBlock.Resources>
  <TextBlock.Text>
    <MultiBinding Converter="{StaticResource myConverter}">
      <Binding Path="myFirst.Value" />
      <Binding Source="{StaticResource fixedValue}" />
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>

или, комбинируя два ответа выше:

<MultiBinding Converter="{StaticResource ScalingConverter}">
    <Binding>
        <Binding.Source>
            <sys:Double>0.5</sys:Double>
        </Binding.Source>
    </Binding>
    <Binding ElementName="TC" Path="ActualWidth" />
</MultiBinding>

который предоставляет правильный тип без ресурсов kludge.


Я не совсем понимаю вопрос, но есть два варианта:

поставить строку <Binding Source="123" /> в вашем multibinding передаст 123 как связанное значение вашему конвертеру.

поставить ConverterParameter="123" в MultiBinding:

<MultiBinding Converter="{StaticResource conv}" ConverterParameter="123">


Я не говорю, что это особенно хороший ответ, но здесь другой подход:

<Binding Path="DoesNotExist" FallbackValue="123" />