ListBox не обновляется в SelectedItems.Add () - PullRequest
1 голос
/ 07 марта 2011

Я пытаюсь привязать список множественного выбора к list<int> (IdProv), который у меня есть. я привязываю SelectedValue к свойству, которое добавляет или удаляет это значение к list<int>. list<int> и listbox.SelectedItems должны быть синхронизированы.

Код xaml списка выглядит следующим образом:

            <ListBox DisplayMemberPath="Name"
                     SelectedValuePath="Id"
                     SelectedValue="{Binding Path=IdProv,
                                    Mode=OneWayToSource,
                                    ValidatesOnExceptions=True}"
                     SelectionMode="Multiple" />

ItemsSource установлен в коде позади. это список продуктов, которые имеют Id и свойство Name

проблема заключается в свойстве SelectedValue, которое не обновляется корректно (ни SelectedItem). Они устанавливаются только при выборе первого элемента, но затем они обновляются.

также при выборе элемента, щелкающего по списку, SelectedValue просто обновляется, когда я щелкаю элемент, который был впервые добавлен.

Есть идеи, что происходит? Я уверен, что сделал глупую ошибку в привязках, но это заняло у меня несколько часов, и я не могу понять это!

спасибо, Мартин

1 Ответ

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

Я сделал простой хак, который меня не устраивает, но решает проблему. Я написал этот обработчик SelectionChanged, который заботится о настройке свойства, которое SelectedValue не обновляет:

    private void idProveedorListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        ListBox list = (ListBox)sender;
        if (list.SelectedItems.Count == 0)
        {
            ProdList.Last().IdProv.Clear();
            return;
        }
        else
        {
            Models.Proveedor lastSelected = list.SelectedItems[list.SelectedItems.Count - 1] as Models.Proveedor;
            if (lastSelected != list.SelectedItem)
                PProdList.Last().IdProveedorInt = lastSelected.Id;
        }
    }
...