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

Nam*_* VU 92 wpf binding multibinding

我有一个多重绑定之类的

<TextBlock>
    <TextBlock.Text>
        <MultiBinding Converter="{StaticResource myConverter}">
            <Binding Path="myFirst.Value" />
            <Binding Path="mySecond.Value" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)

我想将一个固定值,例如"123"传递给上面的两个绑定之一.我怎么能用XAML做到这一点?

Nol*_*rin 137

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

sys在XAML的根目录中定义命名空间以指向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>
Run Code Online (Sandbox Code Playgroud)

  • 也许你应该在你的解决方案中添加xmlns:sys ="clr-namespace:System; assembly = mscorlib";-) (4认同)

小智 97

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

<MultiBinding Converter="{StaticResource ScalingConverter}">
    <Binding>
        <Binding.Source>
            <sys:Double>0.5</sys:Double>
        </Binding.Source>
    </Binding>
    <Binding ElementName="TC" Path="ActualWidth" />
</MultiBinding>
Run Code Online (Sandbox Code Playgroud)

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

  • 需要在文档头部定义命名空间`sys`:```xmlns:sys="clr-namespace:System;assembly=mscorlib"``` (3认同)

ben*_*rce 23

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

将多行<Binding Source="123" />绑定中的行作为绑定值传递给转换器.

放入ConverterParameter="123"你的MultiBinding:

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


Dav*_*ead 8

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

<Binding Path="DoesNotExist" FallbackValue="123" />
Run Code Online (Sandbox Code Playgroud)