2009-12-07 2 views
0

Когда LastChildFill свойства DockPanel устанавливаются истинное, последний ребенок добавил занимает весь неиспользуемое пространство.Программной Замена последнего ребенка в WPF DockPanel с LastChildFill истинной

Это хорошо работает, пока у меня не был, чтобы программно заменить последний ребенок:

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

Теперь новодобавленное управление больше не заполняет пространство.

Как исправить проблему?

ответ

0

Это работает для меня с этим 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> 

и этот код позади

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); 
} 

при нажатии текст один, текстовый блок заменяется, с кнопкой, которая имеет его обратно землю набор , таким образом вы можете видеть, что это произошло.

0

Спасибо Симеон. Оказывается, мое замешательство возникло из-за моего непонимания «заполнения». По-видимому, «заполнять» не обязательно означает занимать все пространство. Вместо этого добавленный элемент управления будет центрирован, если будет указан его размер.