WPFのコードでキャンバスをスタックパネルに追加する際の問題

StackOverflow https://stackoverflow.com/questions/1205851

  •  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>

そして、希望する間隔が表示されます。

役立つこと。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top