2009-12-07 6 views
0

Lorsque propriété LastChildFill d'un DockPanel est réglé vrai, le dernier enfant ajouté occupe tout l'espace inutilisé.Remplacement Programmatically dernier enfant dans un DockPanel WPF avec LastChildFill vrai

Cela fonctionne bien, jusqu'à ce que je devais remplacer le programme dernier enfant:

UIElementCollection children = myDockPanel.Children; 
UIElement uie = new myBestControl(); 
children.RemoveAt(children.Count - 1); 
children.Add(uie); 

Maintenant, le remplissage aucun contrôle nouvellement ajouté plus l'espace.

Comment réparer le problème?

Répondre

0

Il travaille pour moi avec cette XAML

<DockPanel x:Name="MyDock" LastChildFill="True"> 
    <TextBlock DockPanel.Dock="Left" 
       MouseDown="TextBlock_MouseDown">Child 1</TextBlock> 
    <TextBlock DockPanel.Dock="Left">Child 2</TextBlock> 
    <TextBlock>Child 3</TextBlock> 
</DockPanel> 

et ce code derrière

private void TextBlock_MouseDown(object sender, MouseButtonEventArgs e) 
{ 
    UIElementCollection children = MyDock.Children; 
    Button btn = new Button(); 
    btn.Background = Brushes.LightBlue; 

    children.RemoveAt(children.Count - 1); 
    children.Add(btn); 
} 

lorsque vous cliquez sur le texte d'un, le bloc de texte est remplacé, avec un bouton qui a il est de retour ensemble au sol , ainsi vous pouvez voir que c'est arrivé.

0

Merci Simeon. Il s'avère que ma confusion est venue de mon malentendu de "remplir". Apparemment, "remplir" ne signifie pas nécessairement occuper tout l'espace. Au lieu de cela, le contrôle nouvellement ajouté sera centré si sa taille est spécifiée.

Questions connexes