簡體   English   中英

從另一個綁定屬性的設置器設置一個綁定屬性的值

[英]Setting value of a bound property from the setter of another bound property

我在C#中有一個實現INotifyPropertyChanged並包含幾個綁定屬性的業務對象。 簡而言之,它看起來像這樣:

public class BusinessObject : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(PropertyChangedEventArgs e)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, e);
        }
    }

    private int _intProperty;
    public int IntProperty // bound to NumericUpDown control
    {
        get { return _intProperty; }
        set
        {
            if (_intProperty == value)
            {
                return;
            }

            _intProperty = value;
            OnPropertyChanged(new PropertyChangedEventArgs("IntProperty"));

            // if IntProperty is > 10, then set BoolProperty to false
            if (value > 10)
            {
                this.BoolProperty = false;
                //OnPropertyChanged(new PropertyChangedEventArgs("BoolProperty"));
            }
        }
    }

    private bool _boolProperty;
    public bool BoolProperty // bound to CheckBox
    {
        get { return _boolProperty; }
        set
        {
            if (_boolProperty == value)
            {
                return;
            }

            _boolProperty = value;
            OnPropertyChanged(new PropertyChangedEventArgs("BoolProperty"));
        }
    }

正如您在IntProperty的設置器中看到的那樣,當IntProperty設置為> 10時,我將BoolProperty = false設置。BoolProperty綁定到我的UI(winforms)中的CheckBox,但是即使我將BoolProperty = false設置為,在綁定到IntProperty的控件失去焦點之前,CheckBox不會更新以反映該更改。 我以為可能在設置BoolProperty = false之后需要調用OnPropertyChanged,但這似乎沒有什么不同。 這是這種情況下的預期行為嗎? 如果是這樣,是否有可能實現我描述的行為?

您可能需要將綁定的DataSourceUpdateMode設置為DataSourceUpdateMode.OnPropertyChanged

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM