WPF Radiobutton Group - 绑定到布尔值
Posted
技术标签:
【中文标题】WPF Radiobutton Group - 绑定到布尔值【英文标题】:WPF Radiobutton Group - binding to a boolean 【发布时间】:2021-04-02 23:00:15 【问题描述】:我有一个单选按钮组,我绑定到一个布尔值,但它没有在 XAML 中被拾取 - 我确信它很简单 - 任何指针都值得赞赏。
passed
设置为 false。
XAML
<RadioButton Width="64"
IsChecked="Binding passed, Converter=StaticResource BoolInverterConverter"
GroupName="Result">Yes</RadioButton>
<RadioButton Width="64"
IsChecked="Binding passed, Converter=StaticResource BoolInverterConverter"
GroupName="Result">No</RadioButton>
BoolInverterConverter
:
public class BoolInverterConverter : IValueConverter
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
if (value is bool)
return !(bool)value;
return value;
public object ConvertBack(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
if (value is bool)
return !(bool)value;
return value;
未填充:
视图模型:-
public ResultsViewModel()
private Results_results = new Results();
public ResultsViewModel()
_results.Passed= false;
结果类:-
public class Results
private bool passed;
public bool Passed get => passed; set => passed= value;
【问题讨论】:
你能发布你的 ViewModel 吗?您还可以在调试时检查 Visual Studio 输出选项卡,它会告诉您是否找不到绑定。 @Seb - 添加了 ViewModel - 调试未显示绑定失败... 删除您的一个转换器。大概是的。你把两者都颠倒了。这不可能。 【参考方案1】:<RadioButton Width="64" IsChecked="Binding Passed" GroupName="T1" Style="DynamicResource CaseSummaryOptions">Yes</RadioButton>
<RadioButton Width="64" IsChecked="Binding Passed, Converter=StaticResource InverseBoolRadioConverter" GroupName="T1">No</RadioButton>
【讨论】:
【参考方案2】:您需要在更新视图模型字段时告知绑定。您可以通过实现 INotifyPropertyChanged 接口来实现。
让我们为此创建一个基类:
class ViewModelBase : INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged ( [CallerMemberName] string propertyName = "" )
PropertyChanged?.Invoke ( this, new PropertyChangedEventArgs ( propertyName ) );
那你这样用(没错Results也是s ViewModel):
public class Results : ViewModelBase
private bool passed;
public bool Passed
get return passed;
set
passed = value;
OnPropertyChanged ( );
【讨论】:
以上是关于WPF Radiobutton Group - 绑定到布尔值的主要内容,如果未能解决你的问题,请参考以下文章
让 WPF 的 RadioButton 支持再次点击取消选中的功能