【发布时间】:2019-07-15 02:41:03
【问题描述】:
我有许多单选按钮,用于更改选项,通过绑定到带有命令参数的命令,如下所示:
<RadioButton
Content="Option1"
Command="{Binding ChangeOption}
CommandParameter="Option1" />
更改选项的代码是视图模型非常简单:
public property SelectedOption { get; set; }
public void ChangeOption(string option)
{
SelectedOption = option;
}
这有点简化,但它几乎描述了这个概念。我缺少的是,根据SelectedOption 属性来决定是否选中单选按钮。我想将此属性与RadioButton 的Content(或CommandParameter)进行比较。这应该在触发器中完成,然后可以更改 IsSelected 属性。
问题是,我不知道如何访问数据触发器中的Content 或CommandParamater。我被困在这样的事情上:
<Style.Triggers>
<DataTrigger Binding={Binding SelectedOption} Value="?????">
<Setter Property="IsChecked" Value="True" />
</DataTrigger>
</Style.Triggers>
我应该在数据触发器的Value 参数中放入什么,以便将其与所选选项进行比较?
【问题讨论】:
-
如果这是一个包含单选按钮的 itemtemplate 的列表框,那么您只需将 IsSelected 绑定到 IsChecked 并将列表框的 selecteditem 绑定到 SelectedOption。以及内容的选项,这将避免任何“魔术字符串”不匹配问题。因此,魔术字符串是不好的做法。
-
如果你的选项是
enum的值,你可以考虑关注this approach。 -
@Andy 我没有想到这一点,但它实际上可能是解决问题的最佳方法。谢谢。
标签: c# wpf xaml radio-button datatrigger