Ajout de contrôles enfants à un WrapPanel
Je suis très nouveau à WPF.
J'ai un problème simple.
J'ai un stackpanel spTerminalBox.
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="300"/>
<ColumnDefinition Width="881*"/>
<ColumnDefinition Width="11*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="156"/>
<RowDefinition Height="371*"/>
</Grid.RowDefinitions>
<my:WindowHeader x:Name="title" Title="Internet Cafe management software (ICM)" CloseClicked="window_CloseClicked" VerticalAlignment="Top" Margin="0,-1,0,0" Grid.ColumnSpan="3" />
<StackPanel Name ="spTerminalBox" Grid.Column="1" Grid.Row="1" Orientation="Horizontal" Margin="10,10,10,20"/>
</Grid>
Mon xaml structure, c'est qu'.
Je suis le remplissage d'un contrôle utilisateur dans stackpanel dynamiquement dans le code.
Une fois que si les éléments enfants sur un StackPanel ne rentrent pas dans le StackPanel zone, alors il ne devrait pas aller à l'extérieur de la zone visible, il doit descendre.
Comment faire ?
source d'informationauteur shanmugharaj
Vous devez vous connecter pour publier un commentaire.
XAML:
Le code-behind:
Résultat de l'exécution:
vous devez utiliser un
WrapPanel
pour vos besoins.Envelopper votre
StackPanel
dans unScrollViewer
et appelScrollIntoView()
sur l'élément que vous venez d'ajouter.Au lieu d'utiliser
StackPanel
et l'ajout deUserControls
utilisationListBox
lequel vous allezlier à un ObservableCollection.
Le "ObservableCollection' informera la zone de liste lorsque des éléments sont ajoutés/supprimés.
Changement de la zone de liste.ItemsPanel être
Wrappanel
au lieu deStackPanel
prises de http://wpftutorial.net/
"The wrap panel is similar to the StackPanel but it does not just stack all child elements to one row, it wraps them to new lines if no space is left. The Orientation can be set to Horizontal or Vertical."
vous Xaml devrait ressembler à ceci:
il sera préférable d'utiliser pour votre cas, il a une propriété attachée prêt pour cela, mais StackPanel va travailler dans la FIFO
mais si vous voulez juste utiliser dans votre code derrière