wpf - ¿Cómo puedo pasar un valor constante por 1 enlace en multi-binding?
multibinding (4)
Tengo un enlace múltiple como
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource myConverter}">
<Binding Path="myFirst.Value" />
<Binding Path="mySecond.Value" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
Y quiero pasar un valor fijo, por ejemplo, "123" a uno de los dos enlaces anteriores. ¿Cómo puedo hacer eso usando XAML?
No acabo de seguir la pregunta, pero hay dos opciones:
Ponga la línea <Binding Source="123" />
en su multibinding pasará 123 como un valor vinculado a su convertidor.
Coloque ConverterParameter="123"
en su MultiBinding:
<MultiBinding Converter="{StaticResource conv}" ConverterParameter="123">
No estoy diciendo que esta sea una respuesta especialmente buena, pero este es otro enfoque:
<Binding Path="DoesNotExist" FallbackValue="123" />
O, combinando las dos respuestas anteriores:
<MultiBinding Converter="{StaticResource ScalingConverter}">
<Binding>
<Binding.Source>
<sys:Double>0.5</sys:Double>
</Binding.Source>
</Binding>
<Binding ElementName="TC" Path="ActualWidth" />
</MultiBinding>
Que proporciona el tipo correcto sin el kludge de Recursos.
Si su valor es simplemente una string
, puede especificarlo como una constante en la propiedad Source
de un enlace. Si se trata de otro tipo de datos primitivos, debe definir un recurso estático y hacer referencia a esto.
Defina el espacio de nombres sys
en la raíz del XAML para apuntar a System
en mscorlib, y lo siguiente debería funcionar:
<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>