2011-01-03 5 views
1

タイトルと同じように、Dbからいくつかの値を取得していますが、これらはすべてKmにありますが、私はマイルまたはキロメートルでバインドしたい場合は、チェックボックスまたはラジオボタングループのいずれかに表示されるいずれか最も簡単なものを選択します(ラジオが優先されます)。ラジオ/チェックボックスのXamlバインドを帝国/メトリックの間で切り替える

IMultiValueConverterではなくIValueConverterとConvert/ConvertBackメソッドを使用できますが、デフォルトはKilometersですが、ConvertBackメソッドの呼び出し方法はわかりません。または、Km/Milesを表示するかどうかによって、True/FalseをConverterParameterとして渡すことができます。

しかし、私はどちらかの方法でバインドXAMLをフックアップするかどうかはわかりませんいずれかの方法(私は結合標準値変換を行う方法を知っているが、余分なflumffは必要ありません。

任意のヒントを高く評価した。

<StackPanel Grid.Row="0" Grid.ColumnSpan="2" Orientation="Horizontal" HorizontalAlignment="Right"> 
    <RadioButton Content="Km" GroupName="rdBtnGrpValue" IsChecked="True" /> 
    <RadioButton Content="Miles" GroupName="rdBtnGrpValue" /> 
</StackPanel> 

そして:

<TextBox HorizontalAlignment="Stretch" VerticalAlignment="Top" Grid.Column="1" Text="{Binding EquatorialCircumference, Converter={StaticResource KmMiConv}, StringFormat='{}{0:0,0.0}'}" /> 

答えて

2

あなたはMVVMパターンを使用している、とあなたDataContextとしてビューモデルを使用している場合は、を使用することができますとビューモデル内のブール値のプロパティの間のバインド(bool ConvertToImperial { get; set; }など)。

実際の変換は、EquatorialCircumferenceプロパティのゲッターで実行できます。 ConvertToImperialtrueの場合はマイルで値を返し、それ以外の場合はキロメートルで値を返します。

TextBoxの場合は、EquatorialCircumferenceプロパティにバインドするだけで、選択した単位の値が表示されます。

ただし、値が単位の変更の影響を受けるプロパティのプロパティ変更通知を発行する必要があります。

+0

私のモデルには、変更の影響を受ける必要のあるサブモデルがあったため、これを少し拡張しなくてはなりませんでしたが、これはやり遂げた方法です。 – Psytronic

関連する問題