109

我有一个多重绑定

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

我想将一个固定值(例如“123”)传递给上面的两个绑定之一。如何使用 XAML 做到这一点?

4

4 回答 4

159

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

在 XAML 的根目录中定义sys命名空间以指向Systemmscorlib,以下应该可以工作:

<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>
于 2010-07-27T07:34:36.830 回答
113

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

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

它提供了正确的类型而没有资源混乱。

于 2012-07-14T20:43:25.883 回答
29

我不太了解这个问题,但有两种选择:

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

放入ConverterParameter="123"您的 MultiBinding:

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

于 2010-07-27T07:37:18.390 回答
8

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

<Binding Path="DoesNotExist" FallbackValue="123" />
于 2015-07-01T09:54:52.583 回答