2010-03-25 3 views
1

J'ai une zone de liste qui contient une autre lisbox Inside it.Comment définir le focus sur le 1er élément de Listbox imbriqué dans Silverlight?

<ListBox x:Name="listBoxParent"> 
    <ListBox.ItemTemplate> 

     <DataTemplate> 


     <Image x:Name="thumbNailImagePath" Source="/this.jpg" Style="{StaticResource ThumbNailPreview}" />        
      <TextBlock Margin="5" Text="{Binding Smthing}" Style="{StaticResource TitleBlock_Artist}" /> 
      </StackPanel> 
      <StackPanel Style="{StaticResource someStyle}" > 
      <ListBox x:Name="listBoxChild" Loaded="listBoxChild_Loaded" BorderThickness="0"> 
       <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel> 
        <TextBlock Margin="5" Text="{Binding myText}" Width="300"/> 
        </StackPanel> 
       </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 
      </StackPanel> 
     </DataTemplate> 
     </ListBox.ItemTemplate> 

     <ListBox.ItemsPanel> 

     </ListBox.ItemsPanel> 

</ListBox> 

Maintenant, alors que j'essaie de me concentrer au 1er élément de l'enfant List Box Il se concentrer repeteadly (comme il se répète à l'intérieur Listbox parent) le 1er tous les 1ers éléments de parentlistbox, souhaite que je pourrais avoir fournir un écran tourné pour une meilleure compréhension. Mais ne peut pas

public void listBoxChild_Loaded(object sender, RoutedEventArgs e) 
     { 
      var myListBox = (ListBox)sender; 

      myListBox .ItemsSource = PageVariables.eOUTData;//listboxSongsData; 
      myListBox .SelectedIndex = 0; 
      myListBox .Focus(); 
     } 

Merci, Subhen

+0

J'ai essayé de ranger un peu votre xaml (cela vous aurait-il tué pour supprimer tous les espaces blancs non équivoques?) Mais c'est encore un peu loufoque car il n'est pas bien formé en raison d'éléments manquants. Pensez à ranger un peu plus. – AnthonyWJones

Répondre

0

Il est difficile de déterminer ce que vous essayez d'accomplir dans votre code.

Une idée: Avez-vous envisagé de remplacer le ListBox interne par un ItemsControl? Si vous en aviez également besoin pour faire défiler, vous pouvez le superposer dans un ScrollViewer.

Deuxième idée (éventuellement une idée supplémentaire): Chaque élément créé dans le modèle d'élément appelle l'événement Loaded. Tu ne veux pas que ça n'arrive qu'une seule fois? Supprimez l'événement du ListBox interne et définissez le focus une fois que la liste externe a été chargée.

+0

J'ai besoin de ma liste intérieure pour faire défiler et sélectionner. Imaginez juste un lecteur de musique, où la boîte de liste principale contiendra l'image de l'album de musique, et il contiendra un modèle de données qui conatin une autre zone de liste. Maintenant, cette zone de liste contiendra toutes les chansons liées à cet artiste. Maintenant, quand la page se charge, (suite dans le commentaire suivant ...) – Simsons

+0

le focus sera mis sur le 1er morceau (1er élément de la liste intérieure) du 1er artiste (MainList Box 1st Item) et sur le clic du bouton suivant il devrait sélectionnez la 2ème chanson (2nd Item de la liste intérieure) du 1er artiste (MainList Box 1st Item) et ainsi de suite. Ici, je sais que la boîte de liste est le seul contrôle qui va aider dans ce scénario. – Simsons

Questions connexes