2011-12-19 4 views
0

J'ai 2 tables List, ListItem relation de forme un à plusieurs (une liste a de nombreux éléments de la liste). Je souhaite implémenter la vue maître/détail à l'aide de ListBoxs et de sources de données de domaine. Ce qui suit est mon XAML, mais le problème de la table de détail (ListItem) n'affiche pas la valeur de la ligne sélectionnée dans la table principale (Table liste) .J'ai lié la listbox détaillée (ListBoxValues) avec la propriété SelectedItem de la liste principale (ListBoxNames).Mettre en œuvre maître/détail dans Silverlight?

<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:

Je l'ai fait un peu de débogage j'ai trouvé que la propriété ListItem dans la classe de liste n'a pas été rempli! Je ne sais pas pourquoi, il est toujours compte zéro,

Répondre

0

Je l'ai résolu simplement ajouter une nouvelle DomainDataSource et lier son filtre avec maître propriété listbox selectedItem comme suit

<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 >