簡體   English   中英

WPF CheckBox.IsChecked綁定

[英]WPF CheckBox.IsChecked binding

我有一個數據網格,該網格以編程方式生成了可變數量的列。 它包含DataGridTemplateColumns,每個都有一個包含CheckBox和TextBlock的DockPanel。

綁定代碼:

    Binding bindingPicked = new Binding(string.Format("Prices[{0}].Picked", i));
    bindingPicked.Mode = BindingMode.TwoWay;

復選框代碼:

    FrameworkElementFactory factoryCheckBox = new FrameworkElementFactory(typeof(CheckBox));
    factoryCheckBox.SetValue(CheckBox.IsCheckedProperty, bindingPicked);

選擇的屬性:

    private bool _picked;
    public bool Picked
    {
        get { return _picked; }
        set { _picked = value; }
    }

初始化數據網格后,將按預期方式調用Picked getter。 但是,當我選中/取消選中復選框時,不會調用設置器。 是什么原因造成的? 我不想使用DependencyProperty,並且我認為不需要,因為我只需要在用戶單擊CheckBox時調用屬性設置器即可。

編輯:顯然我是個白痴,我只是忘記了bindingPicked.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; 隨時關閉它。

bindingPicked.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;

那應該做的:)

我認為您應該實現INotifyPropertyChanged並在set中調用該事件

如上所述,您需要實現INotifyPropertyChanged。遵循的正確模式是:

private bool _picked;
public bool Picked
{
    get { return _picked; }
    set
    {
        if (_picked != value)
        {
            _picked = value;
            if (null != PropertyChanged)
            {
                PropertyChanged(this, new PropertyChangedEventArgs("Picked"));
            }
        }
    }
}

UpdateSourceTrigger屬性告訴數據綁定何時更新源。 例如,對於TextBox,默認值為LostFocus。 對於大多數其他控件,它是PropertyChanged。

暫無
暫無

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

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