仅当选中CheckBox时如何将TextBox绑定到可为空的属性

时间:2018-12-01 15:15:28

标签: c# winforms data-binding nullable

如果选中属性TextBox.Text,则需要将CheckBox绑定到该属性。否则,属性的值应为null。

TextBox binding to nullable

让我们说DTO类是:

public class DataForInputDTO 
{
    public double? Power {get; set;}
    public double? Speed {get; set;} 
    // Other Properties
}

现在,当用户取消选中 Speed CheckBox时,其旁边的TextBox被禁用(可以),但我还需要属性 Speed 获取null而不是 60 。 有什么方法可以执行此操作而无需手动更改CheckBox.CheckedChaneg上的绑定?

1 个答案:

答案 0 :(得分:0)

您可以通过Speed CheckBox绑定到的属性进行设置。例如,如果“速度的IsChecked属性”复选框绑定到名为“ IsSpeedChecked”的属性,则可以执行以下操作。

    private double _powerValue = 0;

    public double? Power { get; set; } = 0;

    public bool IsPowerEnabled
    {
        get => _isPowerEnabled;
        set
        {
            _isPowerEnabled = value;
            if (!value)
            {
                _powerValue = Power.Value;
                Power = null;
            }
            else
            {
                Power = _powerValue;
            }
            NotifyOfPropertyChange(nameof(Power));
            NotifyOfPropertyChange(nameof(IsPowerEnabled));
        }
    }