WPFのコードでキャンバスをスタックパネルに追加する際の問題
-
05-07-2019 - |
質問
引用とまったく同じ問題があります(こちら、ただし未回答):
経由でStackPanelにコントロールを追加します StackPanel.Childrens.Add()。
しかし、私が見るもの-すべてのコントロール、追加 私によって、同じ位置にあり、 互いに重なります。彼らはそうではない 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>
2行のテキストが重ねて表示されます。
今、これを試してください:
<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>
そして、希望する間隔が表示されます。
役立つこと。
所属していません StackOverflow