Проблемы с привязкой Silverlight DataGrid после обновления или установки selectedIndex = -1 - PullRequest
3 голосов
/ 03 декабря 2010

У меня есть форма данных и поле со списком на форме.Поле со списком привязано к selectedItem таблицы данных.

Я загружаю вещи нормально, и если я выбираю разные строки, поле со списком обновляется корректно.

Если, однако, я устанавливаю datagrid.selectedIndex = -1 послеон загружает (чтобы первая строка не была выбрана) привязка со списком больше не работает.Это проблема.

У меня также есть другой сценарий, где происходит именно это.Если я фильтрую сетку данных, привязка к комбинированному списку также перестает работать.

Я связываю сетку данных с CollectionViewSource, как показано ниже, где _codes - это ObservableCollection

            _ocvsCode = (CollectionViewSource)this.Resources["cvsCode"];
            _ocvsCode.Source = _codes;                
            dataGrid1.ItemsSource = _ocvsCode.View;

Я незнать, почему не выполняется привязка к комбинированному списку после некоторой операции с сеткой данных.

Ответы [ 2 ]

2 голосов
/ 13 декабря 2010

Подходящим решением в этом случае является привязка выбранного элемента данных к некоторой переменной, а затем привязать другие элементы управления и к этой переменной. Обычно плохая практика - привязывать свойства UIElement напрямую к другим свойствам UIElement. Это также сделает отладку проблемой, которая, по-видимому, возникает у вас при принудительном применении свойства selecteditem к комбинированному списку.

0 голосов
/ 02 марта 2011

Я столкнулся с той же проблемой, когда ComboBox привязан к значению SelectedItem объекта DataGrid.

Элемент управления ComboBox обрывается, когда привязываемые им данные становятся нулевыми, и никогда не восстанавливается.Я не уверен, почему это так, но мне кажется, это ошибка.Когда DataGrid сортирует столбец, он сначала устанавливает для SelectedItem значение null, выполняет сортировку, а затем сбрасывает SelectedItem к исходному значению.Когда SelectedItem становится нулевым, ComboBox разрывается.

Вот моя работа:

Создайте свойство SelectedItem в вашем классе, которое используется для DataContext. Выполните проверку на установщик, который не позволяет ему установить значение NULL. Привязать к этому свойству с помощью DataGrid и ComboBox.

public YourItem SelectedItem
{
    get { return _selectedItem; }
    set
    {
        if (value == _selectedItem || value == null)
            return;

        _selectedItem = value;
        RaisePropertyChanged("SelectedItem");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...