0

DockPanel の LastChildFillプロパティがtrueに設定されている場合、最後に追加された子が未使用の領域全体を占有します。

プログラムで最後の子を置き換える必要があるまで、これはうまく機能します。

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

これで、新しく追加されたコントロールがスペースを埋めなくなりました。

問題を解決するにはどうすればよいですか?

4

2 に答える 2

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 をクリックすると、テキスト ブロックが、背景が設定されたボタンに置​​き換えられるため、それが発生したことがわかります。

于 2009-12-07T02:38:13.840 に答える
0

ありがとうシメオン。私の混乱は、「塗りつぶし」の誤解から生じたことがわかりました。どうやら、「埋める」とは必ずしもスペース全体を占有することを意味するわけではありません。代わりに、サイズが指定されている場合、新しく追加されたコントロールは中央に配置されます。

于 2009-12-08T14:21:01.750 に答える