WPF TwoWay Привязка некоторых элементов к ObservableCollection - PullRequest
3 голосов
/ 06 октября 2011

Мне нужно привязать несколько ComboBox к одной ObservableCollection. У меня есть ListView.

<ListView x:Name="lwCoefTables" Grid.Column="1" ItemsSource="{Binding Source={StaticResource CollectionCoefContainers}}">
<ListView.ItemTemplate>
    <DataTemplate>
        <ComboBox x:Name="cmbCoefTableTypes" ItemsSource="{Binding Source={StaticResource CollectionCoefLinksTable}}"  
                SelectedItem="{Binding CoefLinksTableType, Mode=TwoWay}" Grid.Column="1" VerticalAlignment="Center" 
                HorizontalAlignment="Left" Width="180" DisplayMemberPath="Name">
        </ComboBox>
    </DataTemplate>
</ListView.ItemTemplate>

Я хочу связать свою коллекцию со всеми ComboBox и сохранить выбранные элементы для каждого ComboBox. Если я заполняю одну коллекцию и связываю ее со всеми выпадающими списками в режиме TwoWay, я получаю это:

Изображение

Я думаю, мне нужен вспомогательный класс, который будет содержать несколько похожих коллекций. Как это сделать?

1 Ответ

3 голосов
/ 06 октября 2011

Итак, я предполагаю, что свойство CoefLinksTableType относится к элементам внутри CollectionCoefContainers?

В этом случае это должно работать, , если только у вас не повторяется тот же экземпляр внутри CollectionCoefContainers.

1010 *, например *

Нечто подобное будет вести себя так, как вы описываете.

var vm = new VM();
CollectionCoefContainers.Add(vm);
CollectionCoefContainers.Add(vm);
CollectionCoefContainers.Add(vm);
CollectionCoefContainers.Add(vm);

Решение будет

CollectionCoefContainers.Add(new VM());
CollectionCoefContainers.Add(new VM());
CollectionCoefContainers.Add(new VM());
CollectionCoefContainers.Add(new VM());

Может быть полезно иметь определения CollectionCoefContainers и CollectionCoefLinksTable

...