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

У меня есть многосвязывание, например

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

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

Ответ 1

Если ваше значение равно просто 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>

Ответ 2

Или, объединив два ответа выше:

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

Что обеспечивает правильный тип без ресурса kludge.

Ответ 3

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

Поместите строку <Binding Source="123" /> в ваш мультисвязью, чтобы передать 123 в качестве связанного значения в ваш конвертер.

Поместите ConverterParameter="123" в свой MultiBinding:

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

Ответ 4

Я не говорю об этом особенно хорошо, но вот еще один подход:

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