Как связать две DataGrid вместе? - PullRequest
0 голосов
/ 30 марта 2012

Я пишу приложение Silverlight, которое должно показывать некоторые данные. Есть две сетки данных: Первым показан класс «Пользователи». Этот класс содержит несколько полей, таких как «Имя», «Пол», «Оценка», «Отдел», «Отпечатки пальцев». «Отпечатки пальцев» содержат более одного класса «Отпечатки пальцев». Теперь мне нужно связать две DataGrid вместе: первая показывает всех пользователей, а вторая показывает отпечатки пальцев одного пользователя, который был выбран в первой DataGrid.

Кстати: я использую доменную службу WCF для предоставления источника данных для этих двух DataGrids.

ОБНОВЛЕНИЕ 1: Код XAML:

<sdk:Page.Resources>
    <CollectionViewSource x:Key="studentFingerprintsViewSource" Source="{Binding Path=Data.Fingerprints, ElementName=dds_Main}" />
</sdk:Page.Resources>

<riaControls:DomainDataSource x:Name="dds_Main" QueryName="GetStudentsQuery">
    <riaControls:DomainDataSource.FilterDescriptors>
        <riaControls:FilterDescriptor Operator="Contains" PropertyPath="Number" Value="{Binding Text, ElementName=txt_UserID, Mode=TwoWay}"/>
        </riaControls:DomainDataSource.FilterDescriptors>
    <riaControls:DomainDataSource.DomainContext>
        <ds:AllDomainContext />
    </riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>

<sdk:DataGrid AutoGenerateColumns="True" ItemsSource="{Binding ElementName=dds_Main, Path=Data}" Margin="12,38,8,0" Name="dg_Main" RowDetailsVisibilityMode="VisibleWhenSelected" Height="168" VerticalAlignment="Top" />

<sdk:DataGrid AutoGenerateColumns="True" Height="200" HorizontalAlignment="Left" ItemsSource="{Binding Source={StaticResource studentFingerprintsViewSource}}" Margin="406,320,0,0" Name="fingerprintsDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" VerticalAlignment="Top" Width="400" />

class Fingerprint
{
    int id;
    /* something more */
}

Class Student
{
    int id;
    /* Fingerprints. I forgot the type. All models classes are generated by Entity Model Designer */
    /* something more */
}

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

...