web-dev-qa-db-fra.com

Comment passer une valeur constante pour 1 liaison en multi-liaison?

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?

91
Nam G VU

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>
135
Noldorin

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.

93
Anders Kaplan

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

22
benPearce

Je ne dis pas que c'est une réponse particulièrement bonne, mais voici une autre approche:

<Binding Path="DoesNotExist" FallbackValue="123" />
3
David Hollinshead