2010-05-01 34 views
0

J'ai une zone de liste dans une autre zone de liste, dans la zone de liste interne, la taille de listboxitems peut augmenter ou diminuer. Mon problème est que lorsque les éléments internes rétrécissent la boîte de liste externe ne re-rend pas sa hauteur. Ainsi - reste avec la hauteur précédente avant que la liste interne ne rétrécisse.La hauteur ListBoxItem n'est pas mise à jour

J'ai essayé tant de choses ici, parmi Invalider de tous les types, la sélection et la désélection de l'élément de zone de liste qui devrait être mis à jour et plus - rien .... aide

Quelqu'un peut-il me aider pls avec ça?

Thanx, Gili

+0

Pouvez-vous un peu de code? La hauteur de la liste intérieure est-elle réglée sur Auto? Je suppose que vous voulez que les éléments intérieurs des listes de sélection augmentent/rétrécissent, en changeant sa hauteur, changeant ainsi également la hauteur de la boîte externe. – CodeWarrior

Répondre

0

Juste pour le fun je l'ai fait ce qui suit:

<Grid x:Name="LayoutRoot"> 
    <ListBox HorizontalAlignment="Left" Width="283" VerticalAlignment="Top"> 
     <ListBox Margin="0,0,-274,0"> 
      <ListBoxItem Content="Text"/> 
      <ListBoxItem Content="Text"/> 
      <ListBoxItem Content="Text"/> 
      <ListBoxItem Content="Text"/> 
      <ListBoxItem Content="Text"/> 
      <ListBoxItem Content="Text"/> 
     </ListBox> 
     <ListBox Margin="0,0,-274,0"> 
      <ListBoxItem Content="Text"/> 
      <ListBoxItem Content="Text"/> 
      <ListBoxItem Content="Text"/> 
      <ListBoxItem Content="Text"/> 
      <ListBoxItem Content="Text"/> 
      <ListBoxItem Content="Text"/> 
     </ListBox> 
     <ListBox Margin="0,0,-274,0"> 
      <ListBoxItem Content="Text"/> 
      <ListBoxItem Content="Text"/> 
      <ListBoxItem Content="Text"/> 
     </ListBox> 
     <ListBox Margin="0,0,-274,0"> 
      <ListBoxItem Content="Text"/> 
      <ListBoxItem Content="Text"/> 
      <ListBoxItem Content="Text"/> 
      <ListBoxItem Content="Text"/> 
      <ListBoxItem Content="Text"/> 
      <ListBoxItem Content="Text"/> 
     </ListBox> 
    </ListBox> 
</Grid> 

Maintenant, je me rends compte des éléments dans les zones de liste ne sont pas créés au moment de l'exécution, mais je créé un petit bouton avec un gestionnaire de clic qui ajoute des éléments à l'une des listes de sélection du milieu, et tout se redimensionne correctement.

Si vous postez votre code, nous pouvons jeter un oeil et voir ce qui est détraqué.

0

Prenez ceci par exemple:

<ListBox VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="500"> 
     <ListBox x:Name="Item1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="300" BorderBrush="Red" BorderThickness="5"> 
      <ListBox.Items> 
       <RichTextBox VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="300" SizeChanged="OnInnserItemSizeChanged"/> 
       <RichTextBox VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="300"/> 
       <RichTextBox VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="300"/> 
      </ListBox.Items> 
     </ListBox> 
     <ListBox x:Name="Item2" BorderBrush="Green" BorderThickness="5" Width="300" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 
      <ListBox.Items> 
       <RichTextBox VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="300"/> 
       <RichTextBox VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="300"/> 
       <RichTextBox VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="300"/> 
      </ListBox.Items> 
     </ListBox>    
    </ListBox> 

Maintenant, quand je le lance et cliquez sur « Entrée »/« Retour » dans l'un des RichTextBoxes, l'élément listbox externe étend pour correspondre à la nouvelle taille - mais lorsque je supprime la nouvelle ligne ajoutée ne redimensionne pas à sa taille d'origine ...

Thanx, Gili

+0

Gili - Je vous recommande de placer votre matériel de question mis à jour dans votre question originale comme une édition. Les réponses sur Stack Overflow doivent être utilisées pour fournir des réponses à la question initiale et rien de plus. – jpierson