2011-01-03 7 views
1

So ziemlich wie der Titel sagt, bin ich ein paar Werte von einem Db, die alle in Km sind, aber ich möchte einen Konverter implementieren, zwischen denen ich wechseln kann Meilen oder Kilometer, und wollen, die angezeigt wird, entweder eine Checkbox oder eine Optionsfeldgruppe angezeigt werden, je nachdem, was am einfachsten ist (Radio wäre bevorzugt).Xaml-Bindung für Radio/Checkbox zum Umschalten zwischen imperial/metrisch

Ich denke, ich kann nur eine IValueConverter anstelle einer IMultiValueConverter verwenden, und die Convert/ConvertBack-Methoden, wie der Standard wird Kilometer sein, aber ich weiß nicht, wie Sie die ConvertBack-Methode aufrufen. Oder ich könnte true/false als ConverterParameter übergeben, abhängig davon, ob ich Km/Meilen anzeigen möchte.

Aber so oder so bin ich nicht sicher, wie XAML hook up Bindung zu beiden Verfahren (ich weiß, wie ein Standardwert Konverter Bindung zu tun, aber nicht die zusätzlichen flumff benötigt.

Irgendwelche Hinweise zu schätzen.

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

und:

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

Antwort

2

Wenn Sie das MVVM Muster verwenden, und ein Blick-Modell als DataContext verwenden, können Sie einverwendenBindung zwischen dem RadioButton s und einer booleschen Eigenschaft im View-Modell, etwa bool ConvertToImperial { get; set; }.

Ihre tatsächliche Konvertierung kann im Getter für die Eigenschaft auftreten. Wenn ConvertToImperialtrue ist, geben Sie den Wert in Meilen zurück, andernfalls geben Sie den Wert in Kilometern zurück.

Dann für die TextBox, können Sie es einfach an die Eigenschaft binden, und der angezeigte Wert wird in der ausgewählten Einheit sein.

Sie müssen jedoch eine Eigenschaftsänderungsbenachrichtigung für alle Eigenschaften erstellen, deren Werte von einer Änderung der Einheiten betroffen sind.

+0

Dies ist die Art, wie ich am Ende gegangen bin, obwohl ich es ein wenig erweitern musste, da meine Models Untermodelle hatten, die ebenfalls von der Änderung betroffen sein mussten. – Psytronic

Verwandte Themen