2016-03-16 6 views
0

Как я могу получить SelectionText для обновления при изменении флажка. Когда я поднимаю PropertyChangedEvent, PropertyChanged имеет значение null с событием Checked.Связывание PropertyChanged с родительским свойством

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

Это вся ваша BitmaskCheckBox? Вы должны реализовать правильный сбор событий для PropertyChanged, который выполняется, когда новое значение установлено в свойство ViewModel, привязанное к представлению. Лучше всего, если вы посмотрите учебники по [DataBinding] (http://www.wpf-tutorial.com/data-binding/introduction/). –

ответ

0

Как вы используете несколько CheckBoxes, так что вы должны использовать MultiBinding вместо простого Binding.

В MultiBinding вы связываете с несколькими источниками и записываете MultiValueConverter, чтобы объединить все ближайшие значения в одно значение.

Теперь, когда вы используете свое собственное имущество под названием SelectionText, вам необходимо сделать это Dep.Property. И примените Binding с использованием кода.

Вы можете использовать привязку только с DependencyProperty объекта DependencyObject .

Good tutorial

Смежные вопросы