繁体   English   中英

WPF 单选按钮组 - 绑定到 boolean

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM