在Silverlight中实现Master / Detail?

时间:2011-12-19 16:07:33

标签: silverlight data-binding

我有2个表List,ListItem表单关系一对多(一个列表有很多列表项)。 我想使用ListBoxs和域数据源实现主/详细视图。 以下是我的XAML,但详细信息表(ListItem)没有显示Master表(List表)中所选行的值的问题.I使用主列表框的SelectedItem属性绑定详细列表框(ListBoxValues)(ListBoxNames )。

<riaControls:DomainDataSource AutoLoad="True" Height="0"  Name="listDomainDataSource" QueryName="GetListQuery" Width="0">
            <riaControls:DomainDataSource.DomainContext>
                <my:Rule_DBDomainContext />
            </riaControls:DomainDataSource.DomainContext>
        </riaControls:DomainDataSource >

<StackPanel Orientation="Horizontal" Grid.Row="2" Height="600" >
                            <ListBox Name="ListBoxNames" Margin="82,0,20,0" Width="200"
                            ItemsSource="{Binding Data,ElementName=listDomainDataSource}">
                                <ListBox.ItemTemplate>
                                    <DataTemplate>
                                        <StackPanel>
                                            <TextBlock Name="listNameTxt" Text="{Binding Name, Mode=TwoWay}"></TextBlock>
                                        </StackPanel>
                                    </DataTemplate>
                                </ListBox.ItemTemplate>
                            </ListBox>
                            <ListBox Name="ListBoxValues" Margin="82,0,20,0" Width="200" ItemsSource="{Binding SelectedItem.ListItem,ElementName=ListBoxNames}" >
                                <ListBox.ItemTemplate>
                                    <DataTemplate>
                                        <StackPanel>
                                            <TextBlock Name="listValueTxt" Text="{Binding Item, Mode=TwoWay}"></TextBlock>
                                        </StackPanel>
                                    </DataTemplate>
                                </ListBox.ItemTemplate>
                            </ListBox>

                        </StackPanel>

PS:

我做了一些调试我发现List类中的ListItem属性还没有被填充!我不知道为什么,它总是零数,

1 个答案:

答案 0 :(得分:0)

我解决了它只是添加一个新的domaindatasource并将其过滤器与主列表框selectitem属性绑定如下

<riaControls:DomainDataSource AutoLoad="True" Height="0"  Name="listItemsDomainDataSource" QueryName="GetListItemQuery" Width="0" FilterOperator="And">
            <riaControls:DomainDataSource.DomainContext>
                <my:Rule_DBDomainContext />
            </riaControls:DomainDataSource.DomainContext>
            <riaControls:DomainDataSource.FilterDescriptors>
                <riaControls:FilterDescriptor PropertyPath="ListId" Operator="IsEqualTo" Value="{Binding ElementName=ListBoxNames, Path=SelectedItem.id}" />
            </riaControls:DomainDataSource.FilterDescriptors>
        </riaControls:DomainDataSource >