WPF: Установите / снимите все флажки для флажков, расположенных в шаблоне ячейки gridview? - PullRequest
3 голосов
/ 28 ноября 2008

Я пытаюсь создать флажок / снять все отметки CheckBox для числа CheckBoxes, которые расположены внутри шаблона ячейки GridViewColumn. Я добавил этот столбец в GridView (вместе с другими столбцами), установил GridView для свойства view ListView, а затем привязал ListView к коллекции пользовательских DataObjects. Таким образом, в каждой строке ListView есть столбец, содержащий флажок, а также столбцы, связанные с путями свойств связанного объекта.

Я бы хотел создать / снять галочку со всех CheckBox, связав свойство IsChecked CheckBoxes, но я не хочу изменять объект данных, с которым связан ListView. Моей первой попыткой было привязать ListView к Dictionary<DataObject,Boolean>, а затем привязать свойство IsChecked к Value Dictionary, а другие столбцы к Key. DataObjectProperty. Затем я просто переключил Values из словаря, когда затем установил / снял отметку со всех CheckBox. Привязка к работала правильно, но, очевидно, словари не поддерживают уведомления об изменениях, поэтому CheckBoxes никогда не обновлялись.

Есть ли у кого-нибудь предложения относительно лучшего способа решения этой проблемы?

1 Ответ

2 голосов
/ 28 ноября 2008

Единственный способ, которым я могу думать, - это обернуть ваш DataObject и логическое значение в новый класс, который реализует INotofyPropertyChanged. скажем, новый класс - YourCollection. Привязать экземпляр ObservableCollection< YourNewClass > к вашему ListView

   public class YourNewClass :INotifyPropertyChanged
{
    public YourDataObject Object { get; set; }

    private bool _isChecked;
    public bool IsChecked
    {
        get
        {
            return _isChecked;
        }
        set
        {
            _isChecked = value;
            OnPropertyChanged("IsChecked");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...