在DataBinding中使用控件属性

时间:2019-02-21 08:48:28

标签: c# wpf xaml radio-button datatrigger

我有许多单选按钮,通过绑定到带有命令参数的命令来更改选项,例如:

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

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

public property SelectedOption { get; set; }

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

这有点简化,但是几乎可以描述这个概念。我缺少的是根据SelectedOption属性来决定是否选中单选按钮。我想将此属性与Content的{​​{1}}(或CommandParameter)进行比较。这应该在触发器中完成,然后可以更改RadioButton属性。

问题是,我不知道如何访问数据触发器中的IsSelectedContent。我陷入这样的困境:

CommandParamater

我要在数据触发器的<Style.Triggers> <DataTrigger Binding={Binding SelectedOption} Value="?????"> <Setter Property="IsChecked" Value="True" /> </DataTrigger> </Style.Triggers> 参数中添加什么,以便将其与所选选项进行比较?

1 个答案:

答案 0 :(得分:0)

这种方法可能使您头痛不已。

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

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

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

在此对象中也实现INotifyPropertyChanged很重要,这样XAML绑定也会相应更新。