首页 > 解决方案 > 在 DataBinding 中使用控件属性

问题描述

我有许多用于更改选项的单选按钮,通过绑定到带有命令参数的命令,如下所示:

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

更改选项的代码是视图模型非常简单:

public property SelectedOption { get; set; }

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

这有点简化,但它几乎描述了这个概念。SelectedOption我缺少的是,根据属性决定是否选中单选按钮。我想将此属性ContentCommandParameter. RadioButton这应该在触发器中完成,然后可以更改IsSelected属性。

问题是,我无法弄清楚如何访问数据触发器中的ContentCommandParamater。我被困在这样的事情上:

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

我在Value数据触发器的参数中放入了什么,以将其与所选选项进行比较?

标签: c#wpfxamlradio-buttondatatrigger

解决方案


这种方法可能会令您头疼不已。

我建议为这些单选按钮创建一个新类:

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

然后,您可以创建这些项目的 ObservableCollection 或列表,并使用 ItemsControl、绑定到 Option(使用 Label 或 TextBlock)和 IsSelected(使用 RadioButton)来显示它们。

在此对象中实现也很重要,INotifyPropertyChanged以便 XAML 绑定相应地更新。


推荐阅读