WPF CheckBox.IsChecked привязка - PullRequest
       0

WPF CheckBox.IsChecked привязка

2 голосов
/ 30 марта 2012

У меня есть сетка данных с переменным количеством столбцов, которые я генерирую программно. Он содержит DataGridTemplateColumns, каждый с DockPanel, содержащим CheckBox и TextBlock.

Код привязки:

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

Код CheckBox:

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

Выбранный объект:

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

Когда сетка данных инициализируется, выбранные геттеры вызываются, как и ожидалось. Однако, когда я устанавливаю / снимаю флажок, установщик не вызывается. Чем это вызвано? Я не хочу использовать DependencyProperty, и я не думаю, что это нужно, поскольку мне просто нужно вызвать установщик свойств, когда пользователь нажимает CheckBox.

РЕДАКТИРОВАТЬ: Очевидно, я дебил, я просто забыл bindingPicked.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; Не стесняйтесь закрыть это.

Ответы [ 3 ]

4 голосов
/ 30 марта 2012
bindingPicked.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;

Это должно сделать это:)

1 голос
/ 30 марта 2012

Думаю, вам следует реализовать INotifyPropertyChanged и вызвать событие в наборе

0 голосов
/ 31 марта 2012

Как и выше, вам необходимо реализовать 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...