Как передать постоянное значение для 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" />