2009-11-09 3 views
0

Je ListBox être peuplé dans le code. Chaque élément est une simple combinaison texte/URL et lorsqu'un élément est sélectionné, il doit rediriger vers l'URL de l'élément sélectionné. Cela fonctionne comme prévu, mais j'ai un problème avec la sélection de l'élément dans le ListBox. Il semble que quel que soit l'objet que vous avez sélectionné, le premier élément de ListBox est mis en évidence à chaque fois. Vous êtes toujours pris à l'élément correct, mais il met en évidence le mauvais. Une idée?Silverlight souligne toujours le premier élément lors de la sélection

Edit: Ceci est un problème dans IE8, mais fonctionne comme prévu dans FF3.

Edit: Ajout d'un exemple de code. HeadlineData est une classe personnalisée, essentiellement pour contenir les données à afficher.

<Canvas x:Name="HeadlineCanvas"> 
    <ListBox x:Name="HeadlineListBox" Width="260" Height="380" BorderBrush="Gainsboro" BorderThickness="1" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Hidden"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Vertical"> 
        <HyperlinkButton MinHeight="20" MaxHeight="40" Width="240" NavigateUri="{Binding Url}" IsTabStop="False"> 
         <TextBlock TextWrapping="Wrap" Text="{Binding Title}"/> 
        </HyperlinkButton> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
</Canvas> 

code C#

public partial class MainPage : UserControl 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 

     HeadlineData hd = new HeadlineData(); 
     hd.Title = "Title 1"; 
     hd.HeadlineNewsTitle = "Title 1"; 
     hd.LastModifiedTime = DateTime.Now; 
     hd.Url = "http://www.google.com"; 

     this.HeadlineListBox.Items.Add(hd); 

     hd = new HeadlineData(); 
     hd.Title = "Title 2"; 
     hd.HeadlineNewsTitle = "Title 2"; 
     hd.LastModifiedTime = DateTime.Now; 
     hd.Url = "http://www.google.com"; 

     this.HeadlineListBox.Items.Add(hd); 
    } 
} 
+0

Pouvez-vous poster un extrait du code que vous utilisez? – Bryant

Répondre

2

Le problème est que votre zone de liste ne reçoit pas la sélection. Lorsque vous cliquez sur le bouton Lien hypertexte, il gère l'événement click afin que l'élément ne soit pas sélectionné.

Vous devrez supprimer le bouton de lien hypertexte puis faites votre navigation sur l'événement ListBox SelectionChanged au lieu si vous voulez que la sélection pour changer.

+0

Cela a certainement pris soin de la plupart du problème. La seule question que je peux voir est que si vous sélectionnez/utiliser la barre de défilement, si l'on est présent, la zone de liste par défaut également de sélectionner le premier élément. Une idée autour de ça? –

+0

Je ne pouvais pas reproduire ce comportement avec le code ci-dessus. À quoi ressemble le code mis à jour? Vos titres sont plus longs que "titre 1"? Probablement une sorte de problème de mise en page. J'utilise généralement Silverlight Spy pour déboguer ces types de choses, car vous pouvez avoir des surlignages et des objets pour que vous puissiez voir à quel point c'est important. http://silverlightspy.com/ – Bryant

Questions connexes