マルチバインディングで1つのバインディングの定数値を渡すにはどうすればよいですか?


97

私のようなマルチバインディングがあります

<TextBlock>
    <TextBlock.Text>
        <MultiBinding Converter="{StaticResource myConverter}">
            <Binding Path="myFirst.Value" />
            <Binding Path="mySecond.Value" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

そして、上記の2つのバインディングの1つに、「123」などの固定値を渡したいと思います。XAMLを使用してどうすればよいですか?


1
コードスニペット/例を教えてください。
Torsten、

質問の一部が欠落していると思います。上記のバインディングを参照していますが、質問にバインディングコードが表示されていません。
akjoshi 2010

1
どういうわけか私が質問をするたびに、誰かが以前にまったく同じ質問を持っていました:)すばらしい
Ignacio Soler Garcia

1
:これを行うには4番目の方法は、この答えを使用することですstackoverflow.com/a/2552911/222134
ジョニーSkovdal

回答:


146

値が単にの場合は、バインディングのプロパティでstring定数として指定できますSource。他のプリミティブデータ型の場合は、静的リソースを定義してこれを参照する必要があります。

mscorlibでsysポイントするようSystemにXAMLのルートで名前空間を定義すると、以下が機能します。

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

1
@tofutimこれは、MultiBindingにリソースがないように見えるためです。代わりにTextBlock.Resourcesを使用してください
Martin Hennings

6
多分あなたはあなたのソリューションにxmlns:sys = "clr-namespace:System; assembly = mscorlib"を追加する必要があります;-)
c0d3b34n

103

または、上記の2つの答えを組み合わせる:

<MultiBinding Converter="{StaticResource ScalingConverter}">
    <Binding>
        <Binding.Source>
            <sys:Double>0.5</sys:Double>
        </Binding.Source>
    </Binding>
    <Binding ElementName="TC" Path="ActualWidth" />
</MultiBinding>

どちらの方法でも、リソースがなくても適切なタイプが提供されます。


1
名前空間を定義するのに必要なのはsys、文書の先頭に:xmlns:sys="clr-namespace:System;assembly=mscorlib"

25

私は質問には完全には従いませんが、2つのオプションがあります。

<Binding Source="123" />マルチバインディングに行を入れると、123がバインドされた値としてコンバータに渡されます。

ConverterParameter="123"あなたのMultiBindingを入れてください:

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


<Binding Source = "123" />がDependencyProperty.UnsetValueを渡すようです
Josh Stribling '10

<Binding Source = "123" />は、私が意図した整数または倍精度浮動小数点数ではなく、文字列 "123"を渡します。
Marcel Gosselin

ではIValueConverter、パラメーターはとして渡されobjectます。つまり、安全な方法で値を正しい型にキャストする必要があります。IValueConverter.Convert
benPearce 2018年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.