DataGrid и comboBox с 2 разными коллекциями. Возможно ли это? - PullRequest
0 голосов
/ 13 ноября 2010

HI all

У меня есть форма со списком клиентов.

При выборе клиента появляется другая форма с сеткой данных, заполненной «BooksBoughtByCustomer» с табличкой данных с выпадающим списком.

Моя проблема заключается в следующем

Заполните таблицу данных всеми книгами, купленными клиентом.Однако при нажатии на поле со списком должен появиться «AllBooksAvailable»

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

при выборе раскрывающегося списка должны быть перечислены все книги.

Когда я загружаю свою форму "MVVM", у меня есть 2 коллекции

  1. CustomerBooks

  2. AllBooks

ниже - моя попытка, но явно ошибочная.Я как-то заблудился, как это сделать. Можете ли вы дать мне несколько советов или псевдокод в качестве начальной точки?

       <DataGrid
            x:Name="dgCustomerBooks"
            AutoGenerateColumns="False"
            CanUserAddRows="False"
            CanUserDeleteRows="False"             
            ItemsSource="{Binding Source={StaticResource ViewModel}, Path=SelectedCustomer.CustomerBooks}" >
        <DataGrid.Columns>
            <DataGridTemplateColumn
                Header="{Binding Source={StaticResource ViewModel}, Path=Strings.Title, Mode=OneTime}">                                
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox
                            x:Name="cboBooks"
                            ItemsSource="{Binding Source={StaticResource ViewModel}, Path=SelectedCustomer.AllBooks}"
                            MinWidth="100">                                                        
                        </ComboBox>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>                            
        </DataGrid.Columns>
    </DataGrid>

1 Ответ

1 голос
/ 13 ноября 2010

Разве «книги клиента» не являются подмножеством «всех книг»?В этом случае установите для свойства itemsSource в Combobox значение «all books» и установите выбранный элемент, найдя определенную книгу в этой коллекции.

Или я что-то здесь упускаю ... Обновление:

<StackPanel.Resources>
    <DataTemplate DataType="{x:Type WPF_Sandbox:Book}">
        <TextBlock Text="{Binding Name}"/>
    </DataTemplate>
</StackPanel.Resources>
<ComboBox  x:Name="cbo"  ItemsSource="{Binding Books}" SelectedItem="{Binding SelectedBook}"/>

ViewModel имеет 2 свойства - Книги и Выбранная книга.где SelectedBook выбирает одну из списка книг, используя некоторые критерии, такие как

    this.Books = new[] { new Book{Id=1, Name="Book1"},
                         new Book{Id=2, Name="Book2"},
                         new Book{Id=3, Name="Book3"}};
    this.SelectedBook = Books.Where(book => book.Id == 2).First();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...