WPF: комбинированные списки в ListBox и параллелизм - PullRequest
0 голосов
/ 03 августа 2010

У меня есть такой код:

<ListBox ItemsSource="{Binding}">
   <ListBox.ItemTemplate>
      <DataTemplate>
          <StackPanel>
              <TextBlock>Some Other Stuff Here</TextBlock>
              <ComboBox ItemsSource="{Binding}" />
          </StackPanel>
      </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

Проблема в том, что каждый раз, когда внешний ListBox.SelectedItem изменяется, ComboBox внутри него будет менять свой SelectedIndex на -1.Что означает, что если я нажму «Some Other Stuff Here» (если не выбран элемент ListBoxItem, в котором он находится), выбор всех комбинированных списков будет очищен.

Как мне преодолеть это?Thx!

1 Ответ

0 голосов
/ 04 августа 2010

Предположительно, ваш комбинированный список связан с чем-то вроде ObservableCollection - попробуйте вместо этого отобразить экземпляр ICollectionView:

class DataSource
{
    // ...

    public ObservableCollection<string> MyData { get; private set; }
    public ICollectionView MyDataView
    {
        get
        {
            return CollectionViewSource.GetDefaultView(this.MyData);
        }
    }
}

Затем вы можете связать свой комбинированный список с помощью:

<ComboBox ItemsSource="{Binding MyDataView}" IsSynchronizedWithCurrentItem="True" />

Это означаетчто «выбранный элемент» для каждого источника данных хранится в объекте ICollectionView, а не в выпадающем списке, что должно означать, что он сохраняется при изменении ListBox SelectedItem

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