如何在多重绑定中为1个绑定传递常量值?

时间:2010-07-27 04:49:24

标签: wpf binding multibinding

我有像

这样的多重绑定
<TextBlock>
    <TextBlock.Text>
        <MultiBinding Converter="{StaticResource myConverter}">
            <Binding Path="myFirst.Value" />
            <Binding Path="mySecond.Value" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

我想传递固定值,例如“123”到上面两个绑定中的一个。我怎么能用XAML做到这一点?

4 个答案:

答案 0 :(得分:134)

如果您的值只是string,则可以将其指定为绑定的Source属性中的常量。如果它是任何其他原始数据类型,则需要定义静态资源并引用它。

在XAML的根目录中定义sys命名空间以指向mscorlib中的System,以下内容应该有效:

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

答案 1 :(得分:91)

或者,结合上面的两个答案:

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

这提供了没有资源kludge的正确类型。

答案 2 :(得分:22)

我不太关注这个问题,但有两种选择:

将行<Binding Source="123" />放入多重绑定中会将123作为绑定值传递给转换器。

ConverterParameter="123"放入MultiBinding:

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

答案 3 :(得分:3)

我并不是说这是一个特别好的答案,但这是另一种方法:

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