2009-07-30 77 views
1

我有相同的问题,因为引用(采取形式here,但没有回答):问题添加到画布一个StackPanel在代码在WPF

我经由 StackPanel.Childrens.Add控件添加到的StackPanel ()。

但是我所看到的 - 所有控件,由我添加了 ,都处于相同的位置,并且 彼此重叠。他们不是在StackPanel里面的 布局。

甚至StackPanel.UpdateLayout()带来 我什么也没有。

我想为我添加Canvas es(是的,我确实需要它们)到StackPanel。 任何想法?

+0

您是否添加了Canvasses或UserControls?你(双)检查他们没有设置位置/大小信息吗?也许你应该写一些代码。 – 2009-07-30 11:24:23

回答

7

您是否在画布上设置了明确的尺寸?画布的尺寸并不适合其内容,因此除非您明确指定画布的大小,否则当您将它们全部放入堆叠面板时,它们的内容将显示在彼此之上,如您所解释的。这是因为画布儿童相对于其的位置(0,0)将是堆叠面板的左上角(对于所有画布和他们的所有孩子而言是相同的点)。

尝试在Kaxaml以下突出的情况:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> 
    <StackPanel> 
    <Canvas> 
     <TextBlock Text="Child of canvas one" /> 
    </Canvas> 
    <Canvas> 
     <TextBlock Text="Child of canvas two" /> 
    </Canvas> 
    </StackPanel> 
</Page> 

你会看到文本的两条线叠加在另一个之上。

现在试试这个:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> 
    <StackPanel> 
    <Canvas Height="15"> 
     <TextBlock Text="Child of canvas one" /> 
    </Canvas> 
    <Canvas Height="15"> 
     <TextBlock Text="Child of canvas two" /> 
    </Canvas> 
    </StackPanel> 
</Page> 

,你会看到你想要的间距。

希望有所帮助。

+0

我曾经为它里面的所有元素,而不是,在别处很好地呈现画布... tx人 – Peter 2009-07-30 11:38:09