1

私は引用されたものとまったく同じ問題を抱えています(ここで形をとっていますが、答えられていません):

StackPanel.Childrens.Add()を介してStackPanelにコントロールを追加します。

しかし、私が見るもの-私が追加したすべてのコントロールは同じ位置にあり、互いに重なり合っています。StackPanel内にレイアウトされていません。

StackPanel.UpdateLayout()でさえ私には何ももたらさない。

私は私のためにCanvasesを追加しようとしています(はい、私はそれらが必要です)StackPanel。何か案は?

4

1 に答える 1

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>

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>

そして、あなたが望む間隔が表示されます。

それが役立つことを願っています。

于 2009-07-30T11:14:52.107 に答える