0

DockPanel的LastChildFill属性设置为true时,添加的最后一个子元素会占据整个未使用的空间。

效果很好,直到我不得不以编程方式替换最后一个孩子:

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

现在,新添加的控件不再填充空间。

我应该如何解决这个问题?

4

2 回答 2

0

谢谢西蒙。原来我的困惑来自我对“填充”的误解。显然,“填充”并不一定意味着占据整个空间。相反,如果指定了新添加的控件的大小,它将居中。

于 2009-12-08T14:21:01.750 回答
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);
}

当您单击文本之一时,文本块被替换为一个设置了背景的按钮,因此您可以看到它已经发生。

于 2009-12-07T02:38:13.840 回答