我有一些单选按钮用于更改选项,通过绑定到带有命令参数的命令,如下所示:
<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
参数中添加什么,以将其与所选选项进行比较?
这种方法可能会让你更头疼而不是它的价值。
我建议为这些单选按钮创建一个新类:
public class OptionSelection
{
public bool IsSelected {get; set;}
public string Option {get; set;}
}
然后,您可以创建ObservableCollection或这些项的列表,并使用ItemsControl显示它们,绑定到Option(使用Label或TextBlock)和IsSelected(使用您的RadioButton)。
在此对象中实现INotifyPropertyChanged
非常重要,以便XAML绑定相应地更新。