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