我有与引用的完全相同的问题(在此处采取形式,但未回答):
我通过 StackPanel.Childrens.Add( ) 将控件添加到 StackPanel。
但是我所看到的 - 我添加的所有控件都位于相同的位置并相互重叠。它们不是 StackPanel 内部的布局。
甚至 StackPanel.UpdateLayout() 也没有给我带来任何好处。
我对我来说正在尝试将Canvas
es(是的,我确实需要它们)添加到StackPanel
. 有任何想法吗?
我有与引用的完全相同的问题(在此处采取形式,但未回答):
我通过 StackPanel.Childrens.Add( ) 将控件添加到 StackPanel。
但是我所看到的 - 我添加的所有控件都位于相同的位置并相互重叠。它们不是 StackPanel 内部的布局。
甚至 StackPanel.UpdateLayout() 也没有给我带来任何好处。
我对我来说正在尝试将Canvas
es(是的,我确实需要它们)添加到StackPanel
. 有任何想法吗?
您是否在画布上设置了明确的尺寸?画布的大小不适合其内容,因此除非您明确指定画布的大小,否则当您将它们全部放在堆栈面板中时,它们的内容将按照您的解释显示在彼此的顶部。这是因为画布子项相对定位的 (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>
你会看到你想要的间距。
希望有帮助。