94 votes

Comment puis-je passer une valeur constante pour une liaison dans une liaison multiple?

J'ai un multi-contraignant 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 liaisons ci-dessus. Comment puis-je faire cela en utilisant XAML?

S'il vous plaît aider.

139voto

Noldorin Points 67794

Si votre valeur est simplement string , vous pouvez la spécifier en tant que 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 la référencer.

Définissez l’espace de nom sys dans la racine du code XAML pour qu’il pointe 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>
 

98voto

Anders Kaplan Points 331

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.

24voto

benPearce Points 9817

Je ne suis pas tout à fait la question mais il y a deux options:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X