2009-03-02 8 views
1

J'ai un problème avec ce XAML ... Quand je l'exécute, il se bloque à cause du TextBox. (Par "se bloque" je veux dire que la page d'hébergement aspx montre dans le navigateur, mais l'objet usercontrol n'apparaîtra pas sur la page, et il y a quelques petites barres vertes dans le bas de la fenêtre Internet Explorer qui se remplissent mais ne disparaissent jamais .) J'ai un TextBox et un TextBlock dans mon code juste pour tester. Il fonctionne bien si je commente le TextBox et ne laisse que le TextBlock, donc je sais que le DataContext est défini et que la liaison à PatternName fonctionne. Il n'y a pas d'erreur dans la fenêtre Sortie pour m'aider à déboguer. S'il vous plaît aider! J'ai passé des heures sur ce problème. Que peut-il arriver?Silverlight 2 - Problème DataContext/Binding

<StackPanel x:Name="HolePatternStackPanel" > 
      <TextBlock Text="{Binding PatternName}" Width="75" /> 
      <TextBox Text="{Binding PatternName}" Height="25" Width="125"/> 
    </StackPanel> 

Voici le code qui définit le DataContext d'une méthode d'appel ListBox.SelectionChanged:

private void lvHolePatterns_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    HolePatternStackPanel.DataContext = this.ActivePattern; 
} 

Répondre

0

Eh bien, je l'ai appris plus à ce sujet ... Ce tout est un maître-détail Conception de l'interface utilisateur, et j'ai donc eu mon ListBox en utilisant SelectedItem = "{Binding ActivePattern}", et apparemment, une boucle infinie était mise en place entre cela et le gestionnaire d'événements SelectionChanged.

Maintenant, ma question est de savoir à quoi sert SelectedItem? Puis-je ajouter un gestionnaire d'événements SelectionChanged pour mettre à jour le DataContext du panneau de pile de détails?

0

Vous auriez pas besoin d'utiliser l'événement SelectionChanged si vous définissez le DataContext des contrôles avec le SelectedItem

par exemple

<Grid DataContext="{Binding SelectedItem}"> 
    <TextBlock Text="{Binding some_field_in_selecteditem}" /> 
</Grid>