Использование свойств элемента управления в DataBinding - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть несколько переключателей, которые используются для изменения параметра, будучи привязанным к команде с параметром команды, например:

<RadioButton
  Content="Option1"
  Command="{Binding ChangeOption}
  CommandParameter="Option1" />

Код для изменения параметров - это модель представлениядовольно просто:

public property SelectedOption { get; set; }

public void ChangeOption(string option)
{
    SelectedOption = option;
}

Это немного упрощено, но в значительной степени описывает концепцию.Что мне не хватает, так это решить, стоит ли включать переключатель или нет, основываясь на свойстве SelectedOption.Я хочу сравнить это свойство с Content (или CommandParameter) RadioButton.Это должно быть сделано в триггере, который затем может изменить свойство IsSelected.

Проблема в том, что я не могу понять, как получить доступ к Content или CommandParamater в триггере данных,Я застрял в чем-то вроде этого:

<Style.Triggers>
  <DataTrigger Binding={Binding SelectedOption} Value="?????">
    <Setter Property="IsChecked" Value="True" />
  </DataTrigger>
</Style.Triggers>

Что мне указать в параметре Value Триггера данных, чтобы сравнить его с выбранным параметром?

1 Ответ

0 голосов
/ 21 февраля 2019

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

Я бы порекомендовал создать новый класс для этих переключателей:

public class OptionSelection
{
    public bool IsSelected {get; set;}
    public string Option {get; set;}
}

Затем вы можете создать ObservableCollection или List ofэти элементы и отображают их с помощью ItemsControl, привязки к Option (с меткой или TextBlock) и IsSelected (с помощью вашего RadioButton).

Важно также реализовать INotifyPropertyChanged в этом объекте, чтобы обновления привязок XAML обновлялисьсоответственно.

...