2010-07-27 6 views
80

que tienen un multi-unión como¿Cómo puedo pasar un valor constante por 1 enlace en multi vinculante?

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

+1

cualquier fragmentos de código/Ejemplos por favor? – Torsten

+0

Creo que falta una parte de la pregunta, se refiere al enlace anterior pero no veo ningún código vinculante en la pregunta. – akjoshi

+0

De alguna manera, cada vez que tengo una pregunta, alguien tenía exactamente la misma pregunta anteriormente :) ¡Genial! –

Respuesta

116

Si su valor es simplemente un 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.

Definir el espacio de nombres sys en la raíz de la XAML para apuntar a System en mscorlib, y el siguiente debe 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> 
+2

No obtengo MultiBinding.Resources como válido ... – tofutim

+1

@tofutim Eso es porque MultiBinding no lo hace parecen tener Recursos. Use TextBlock.Resources en su lugar ... –

+2

Quizás debería agregar xmlns: sys = "clr-namespace: System; assembly = mscorlib" a su solución ;-) – c0d3b34n

19

No acabo de seguir la pregunta, pero hay dos opciones:

Poner la línea <Binding Source="123" /> en su multibinding pasará 123 como un valor vinculado a su convertidor.

Deja ConverterParameter="123" en su MultiBinding:

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

+0

parece pasar DependencyProperty.UnsetValue –

+0

Un "muy bueno" para ti :) –

81

O, la combinación de 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 la kludge Recursos.

2

No estoy diciendo esto una especialmente buena respuesta, pero aquí es otro enfoque:

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