How can I pass a constant value for 1 binding in multi-binding?

后端 未结 4 1114
时光取名叫无心
时光取名叫无心 2020-12-12 17:14

I have a multi-binding like


    
        
                     


        
相关标签:
4条回答
  • 2020-12-12 17:18

    I'm not saying this an especially good answer but here is another approach:

    <Binding Path="DoesNotExist" FallbackValue="123" />
    
    0 讨论(0)
  • 2020-12-12 17:19

    If your value is simply a string, you can specify it as a constant in the Source property of a binding. If it is any other primitive data type, you need to define a static resource and reference this.

    Define the sys namespace in the root of the XAML to point to System in mscorlib, and the following should work:

    <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>
    
    0 讨论(0)
  • 2020-12-12 17:26

    Or, combining the two answers above:

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

    Which provides the right type without the Resources kludge.

    0 讨论(0)
  • 2020-12-12 17:26

    I don't quite follow the question but there are two options:

    Put the line <Binding Source="123" /> in your multibinding will pass 123 as a bound value to your converter.

    Put ConverterParameter="123" in your MultiBinding:

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

    0 讨论(0)
提交回复
热议问题