J'ai une multi-liaison comme
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource myConverter}">
<Binding Path="myFirst.Value" />
<Binding Path="mySecond.Value" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
Et je veux passer une valeur fixe, par exemple "123" à l'une des deux fixations ci-dessus. Comment puis-je faire cela en utilisant XAML?
Si votre valeur est simplement un string
, vous pouvez la spécifier comme constante dans la propriété Source
d'une liaison. S'il s'agit d'un autre type de données primitif, vous devez définir une ressource statique et y faire référence.
Définissez l'espace de noms sys
à la racine du XAML pour pointer vers System
dans mscorlib, et les éléments suivants devraient fonctionner:
<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>
Ou, en combinant les deux réponses ci-dessus:
<MultiBinding Converter="{StaticResource ScalingConverter}">
<Binding>
<Binding.Source>
<sys:Double>0.5</sys:Double>
</Binding.Source>
</Binding>
<Binding ElementName="TC" Path="ActualWidth" />
</MultiBinding>
Qui fournit le bon type sans le kludge des ressources.
Je ne comprends pas tout à fait la question mais il y a deux options:
Mettez la ligne <Binding Source="123" />
dans votre multibinding passera 123 comme valeur liée à votre convertisseur.
Mettez ConverterParameter="123"
dans votre MultiBinding:
<MultiBinding Converter="{StaticResource conv}" ConverterParameter="123">
Je ne dis pas que c'est une réponse particulièrement bonne, mais voici une autre approche:
<Binding Path="DoesNotExist" FallbackValue="123" />