Привязка Поля комбинированного списка WPF

Я получил два Поля комбинированного списка, и у них обоих есть привязка с тем же Источником.

<ComboBox ItemsSource="{Binding Source={StaticResource UsersViewSource}}"

И когда я изменяю что-то в первом, оно отражается также к второму. И я не знаю, как сохранить их значения SelectedItem отдельно, с помощью того же ItemsSource.

8
задан iLemming 16 March 2010 в 21:49
поделиться

4 ответа

Свойство IsSynchronizedWithCurrentItem должно иметь значение False:

true, если SelectedItem всегда синхронизируется с текущим элементом в ItemCollection; false, если SelectedItem никогда не синхронизируется с текущим элементом; null, если SelectedItem синхронизируется с текущим элементом , только если Selector использует CollectionView. Значение по умолчанию - null.

Вот пример:

<Page
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
 xmlns:sys="clr-namespace:System;assembly=mscorlib"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
   <Page.Resources>
      <x:Array x:Key="myStrings" Type="sys:String">
         <sys:String>one</sys:String>
         <sys:String>two</sys:String>
         <sys:String>three</sys:String>
         <sys:String>four</sys:String>
         <sys:String>five</sys:String>
      </x:Array>
   </Page.Resources>

<StackPanel Width="200">
    <ComboBox IsSynchronizedWithCurrentItem="False" Margin="25"
    ItemsSource="{Binding Source={StaticResource myStrings}}" />

    <ComboBox IsSynchronizedWithCurrentItem="False"  Margin="25"
    ItemsSource="{Binding Source={StaticResource myStrings}}" />
</StackPanel>

</Page>
10
ответ дан 5 December 2019 в 12:57
поделиться

Вам просто нужно установить для свойства IsSynchronizedWithCurrentItem значение false (по умолчанию оно равно null)

2
ответ дан 5 December 2019 в 12:57
поделиться

Свойство SelectedItem можно отдельно привязать к каждому окну со списком отдельно.

т.е.

SelectedItem={Binding SelectedItem1}

Таким образом, когда каждый элемент устанавливается, он хранится в другом месте.

0
ответ дан 5 December 2019 в 12:57
поделиться

Я бы предположил (по имени вашей привязки), что причина этого в том, что вы привязываетесь к CollectionViewSource (который является оболочкой для коллекции). Этот класс представляет собой прокси-сервер, который использует WPF, который включает (среди прочего) выбранный элемент коллекции. Очевидно, что если вы разделяете эту коллекцию между двумя комбинированными списками, вы также разделяете выбранный элемент.

Если вы установите ItemsSource на что-то, что не a CollectionViewSource , элемент управления автоматически объединит его в один. Итак, я предлагаю выполнить прямую привязку к коллекции, а не обертывать в CollectionViewSource - или, в качестве альтернативы, создать два экземпляра CollectionViewSource , по одному для каждого ComboBox .

1
ответ дан 5 December 2019 в 12:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: