[英]WPF Radiobutton Group - binding to a boolean
我有一个单选按钮组,我将其绑定到 boolean 值,但它没有在 XAML 中被拾取 - 我确信它很简单,我缺少 - 任何指针表示赞赏。
passed
设置为假。
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;
}
}
结果 class:-
public class Results
{
private bool passed;
public bool Passed{ get => passed; set => passed= value; }
}
<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>
您需要在更新视图模型字段时告知绑定。 您可以通过实现 INotifyPropertyChanged 接口来实现。
让我们为此创建一个基数 class:
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 ( );
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.