当 DockPanel 的 LastChildFill 属性设置为 true 时,添加的最后一个子项占用整个未使用的空间。
这很有效,直到我不得不以编程方式替换最后一个孩子:
UIElementCollection children = myDockPanel.Children;
UIElement uie = new myBestControl();
children.RemoveAt(children.Count - 1);
children.Add(uie);
现在,新添加的控件不再填充空间。
我该如何解决问题?
答案 0 :(得分: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);
}
当您单击文本1时,文本块将被替换,其中一个按钮具有背景设置,因此您可以看到它已经发生。
答案 1 :(得分:0)
谢谢Simeon。事实证明,我的困惑来自于我对“填充”的误解。显然,“填充”并不意味着占据整个空间。相反,如果指定了大小,则新添加的控件将居中。