Xaml привязка для радио / флажок для переключения между имперской / метрической - PullRequest
1 голос
/ 03 января 2011

В значительной степени, как говорится в названии, я собираю некоторые значения из БД, которые все в Км, но я хочу реализовать конвертер, который я могу переключать между Милями или Километрами, и хочу привязать, который отображается в либо флажок, либо группа переключателей, в зависимости от того, что проще (предпочтительнее Радио).

Я думаю, что могу просто использовать IValueConverter вместо IMultiValueConverter и методы Convert / ConvertBack, по умолчанию это будет Километры, но я не знаю, как вызвать метод ConvertBack. Или я мог передать true / false в качестве параметра ConverterParameter в зависимости от того, хочу ли я отображать км / миль.

Но в любом случае, я не уверен, как подключить Xaml Binding для любого из этих методов (я знаю, как сделать привязку стандартного преобразователя значений, но не нужен дополнительный сбой.

Любые намеки приветствуются.

<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}'}" />

1 Ответ

2 голосов
/ 03 января 2011

Если вы используете шаблон MVVM и используете модель представления в качестве DataContext, вы можете использовать Mode=TwoWay привязку между RadioButton s и логическим свойством в модели представления, что-то вроде bool ConvertToImperial { get; set; }.

Ваше фактическое преобразование может произойти в получателе для свойства EquatorialCircumference. Если ConvertToImperial равно true, вернуть значение в милях, в противном случае вернуть значение в километрах.

Затем для TextBox вы можете просто привязать его к свойству EquatorialCircumference, и отображаемое значение будет в выбранной единице.

Однако вам нужно будет подать уведомление об изменении свойства для любых свойств, на значения которых влияет изменение в единицах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...