我遇到与引用完全相同的问题(摘自这里,但没有回答):

  

我通过添加控件到StackPanel   StackPanel.Childrens.Add()。

     

但我所看到的 - 所有控件,都添加了   我,是在同一个位置   相互重叠。他们没有   StackPanel里面的布局。

     

甚至StackPanel.UpdateLayout()带来   我一无所获。

我正在尝试将 Canvas es(是的,我确实需要它们)添加到 StackPanel 。 有什么想法吗?

有帮助吗?

解决方案

您是否在画布上设置了明确的尺寸?画布的大小不适合其内容,因此除非您明确指定画布的大小,否则当您将它们全部放在堆栈面板中时,它们的内容将显示在彼此之上,如您所解释的那样。这是因为画布子项相对于其定位的(0,0)位置将位于stackpanel的左上角(所有画布及其所有子画面的相同点)。

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>

你会看到你想要的间距。

希望有所帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top