私のようなマルチバインディングがあります
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource myConverter}">
<Binding Path="myFirst.Value" />
<Binding Path="mySecond.Value" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
そして、私は固定値を渡したい上記の2つのバインディングのいずれかに「123」。 XAMLを使用してこれを行うにはどうすればよいですか?
値が単にstring
である場合、バインディングのSource
プロパティで定数として指定できます。他のプリミティブデータ型の場合、静的リソースを定義し、これを参照する必要があります。
Mscorlibのsys
を指すようにXAMLのルートでSystem
名前空間を定義すると、次のように機能します。
<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つの答えを組み合わせます。
<MultiBinding Converter="{StaticResource ScalingConverter}">
<Binding>
<Binding.Source>
<sys:Double>0.5</sys:Double>
</Binding.Source>
</Binding>
<Binding ElementName="TC" Path="ActualWidth" />
</MultiBinding>
Resources kludgeなしで適切なタイプを提供します。
質問にはあまり従いませんが、2つのオプションがあります。
<Binding Source="123" />
は、マルチバインディングで、コンバータにバインドされた値として123を渡します。
ConverterParameter="123"
MultiBindingで:
<MultiBinding Converter="{StaticResource conv}" ConverterParameter="123">
これは特に良い答えではありませんが、別のアプローチを次に示します。
<Binding Path="DoesNotExist" FallbackValue="123" />