Использование Datagrid в RowDetailsTemplate другого Datagrid - PullRequest
3 голосов
/ 13 июня 2009

Я хотел бы использовать DataGrid в RowDetailsTempalte другого Datagrid. Этот внутренний Datagrid должен иметь свои столбцы, связанные со свойством текущего объекта во внешнем Datagrid. Например, если внешняя таблица данных отображает все контакты по имени и фамилии, если я выберу строку, я смогу увидеть другую таблицу данных, содержащую все номера телефонов, связанные с этим контактом. Больше всего меня интересует, как данные внутреннего Datagrid связываются с данными внешнего Datagrid. Вот некоторый XAML, с которого я до сих пор начинаю:

<data:DataGrid MinHeight="700" x:Name="contacts">
                <data:DataGrid.Columns>                       
                    <data:DataGridTextColumn Header="First Name" Binding="{Binding FirstName}"></data:DataGridTextColumn>
                    <data:DataGridTextColumn Header="Last Name" Binding="{Binding LastName}"></data:DataGridTextColumn>                        
                 </data:DataGrid.Columns>
                <data:DataGrid.RowDetailsTemplate>
                    <DataTemplate>
                        <StackPanel Background="Black">
                            <StackPanel Background="White" Margin="16">
                                <data:DataGrid DataContext="Contact.Phones">

                                </data:DataGrid>
                            </StackPanel>
                        </StackPanel>
                    </DataTemplate>
                </data:DataGrid.RowDetailsTemplate>
            </data:DataGrid>

Ответы [ 2 ]

1 голос
/ 16 июня 2009

Последний ответ в этой теме мне помог: Как работает доступ к внутренней Datagrid в Silverlight? .

На внутренней DataGrid я установил ItemsSource="{Binding Phones}" и удалил DataContext.

0 голосов
/ 13 июня 2009

Вместо этого используйте RowDetailsTemplate: Свойство DataGrid.RowDetailsTemplate .

Вы можете привязаться к событию DetailsVisibilityChanged, и оно передаст вам DataContext строки, по которой щелкнули. Оттуда вы можете получить подробные данные и соответственно обновить RowDetailsTemplate.

...