2011-01-03 3 views
1

거의 제목과 같이, 나는 Db에서 일부 값을 얻습니다. 모두 Km이지만, 전환 할 수있는 변환기를 구현하고 싶습니다. 마일 또는 킬로미터 중 하나를 선택하고 체크 박스 또는 라디오 버튼 그룹 중 가장 쉬운 방법으로 표시되는 바인딩을 원하는 경우 (라디오가 선호 됨).라디오/체크 박스의 Xaml 바인딩이 imperial/metric 사이를 전환

IMultiValueConverter 대신 IValueConverter을 사용할 수 있으며 Convert/ConvertBack 메서드는 기본값이 킬로미터이므로 ConvertBack 메서드를 호출하는 방법을 모르겠다 고 생각합니다. 또는 Km/Miles를 표시할지 여부에 따라 True/False를 ConverterParameter로 전달할 수 있습니다.

하지만 두 방법 중 하나에 바인딩 XAML를 연결하는 방법을 잘 모르겠어요 어느 방법 (I 표준 값 컨버터가 결합 할 수 있지만 추가 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> 

그리고 :

당신은 MVVM 패턴을 사용하고 DataContext로보기 모델을 사용하는 경우
<TextBox HorizontalAlignment="Stretch" VerticalAlignment="Top" Grid.Column="1" Text="{Binding EquatorialCircumference, Converter={StaticResource KmMiConv}, StringFormat='{}{0:0,0.0}'}" /> 

답변

2

, 당신이 사용할 수있는 Mode=TwoWayRadioButton과 뷰 모델의 부울 속성 사이의 바인딩. bool ConvertToImperial { get; set; }과 같습니다.

실제로 변환은 EquatorialCircumference 속성에 대한 getter에서 발생할 수 있습니다. ConvertToImperialtrue이면 마일 단위로 값을 반환하고, 그렇지 않으면 킬로미터 단위로 값을 반환합니다.

그러면 TextBox의 경우 EquatorialCircumference 속성에 간단히 바인딩 할 수 있으며 표시되는 값은 선택한 단위로 표시됩니다.

그러나 단위 변경으로 값이 영향을받는 속성의 속성 변경 알림을 발생시켜야합니다.

+0

내 모델이 변화의 영향을받을 필요가있는 하위 모델을 보유하고 있기 때문에이 모델을 조금 확장해야했지만 결국 이렇게되었습니다. – Psytronic

관련 문제