将PropertyChanged绑定到父属性

时间:2016-03-16 01:43:40

标签: c# wpf data-binding

如何在更改复选框时更新SelectionText。 当我提出PropertyChangedEvent时,PropertyChangedChecked事件中为空。

BitmaskStackPanel是父级,显示所有复选框。

这可能非常简单,但我之前没有这样做过。

class BitmaskStackPanel {
    public BitmaskStackPanel(string name, List<BitmaskCheckBox> checkboxes, long defaultValue = 0)
            {
                Name = name;
                _checkboxes = checkboxes;
                DefaultValue = defaultValue;

                foreach (var bmcb in Checkboxes)
                {
                    Children.Add(bmcb);
                }
            }

    public List<BitmaskCheckBox> Checkboxes
            {
                get
                {
                    return _checkboxes;
                }
            }

    public string SelectionText
            {
                get
                {
                    return ToString();
                }
            }
    }
}
    public class BitmaskCheckBox : CheckBox, INotifyPropertyChanged
    {
        public BitmaskCheckBox(long value, string details, bool isChecked = false, Visibility visibility = Visibility.Visible)
        {
            Tag = value;
            Content = details;
            IsChecked = isChecked;
            Visibility = visibility;
        }

        public event PropertyChangedEventHandler PropertyChanged;
    }

1 个答案:

答案 0 :(得分:0)

当您使用多个CheckBoxes时,您必须使用MultiBinding而非简单Binding

MultiBinding中,您绑定多个来源并编写MultiValueConverter以将所有即将到来的值合并为单个值。

现在,当您使用自己的名为SelectionText的属性时,必须将其设为Dep.Property。并谨慎使用代码{/ 1}}。

  

您只能将绑定与A的DependencyProperty一起使用   的DependencyObject。

Good tutorial