就像标题所说的那样,我正在从Db中获取一些值,这些值都是以Km为单位,但我想实现一个转换器,我可以在Miles或Kilometers之间切换,并希望绑定显示到复选框或单选按钮组,以最简单的方式(首选收音机)。
我想我可以使用IValueConverter
而不是IMultiValueConverter
,以及Convert / ConvertBack方法,因为默认值是公里,但我不知道如何调用ConvertBack方法。或者我可以传递true / false作为ConverterParameter,具体取决于我是否要显示Km / Miles。
但无论哪种方式,我都不确定如何在任何一种方法上连接Xaml Binding(我知道如何进行标准值转换器绑定,但不需要额外的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}'}" />
答案 0 :(得分:2)
如果您正在使用MVVM模式,并且正在使用视图模型作为DataContext
,则可以在Mode=TwoWay
s和布尔属性之间使用RadioButton
绑定视图模型,类似于bool ConvertToImperial { get; set; }
。
您的实际转化可能发生在EquatorialCircumference
属性的getter中。如果ConvertToImperial
为true
,则返回以英里为单位的值,否则返回以千米为单位的值。
然后,对于TextBox
,您只需将其绑定到EquatorialCircumference
属性,显示的值就会显示在所选单位中。
但是,您需要针对其值受单位变化影响的任何属性提出属性更改通知。