2

全画面表示のダイアログがあり、キャンバスを中央に配置したいと考えています。たとえば、Label の Vertical/Horizo​​ntalalignment を使用したグリッドでうまく機能するようですが、これを試してみると、キャンバスの中央ではなく左上隅が中央に配置されます。

<Window
    Title=""
    Topmost="True" WindowStyle="None" WindowState="Maximized"
    >
<Grid>
    <Grid VerticalAlignment="Center" HorizontalAlignment="Center">
        <Canvas>
            <Border Margin="20" 
                Background="White"
                BorderBrush="Black"
                BorderThickness="2"
                Padding="20" >
                <DockPanel Margin="10">
                    <StackPanel DockPanel.Dock="Top" Margin="0 0 0 50" 
                                Orientation="Vertical">
                       <Label FontSize="32" Content="Hello"></Label>
                    </StackPanel>
                    <StackPanel HorizontalAlignment="Right"
                                DockPanel.Dock="Bottom" 
                                Orientation="Horizontal">
                            <Label FontSize="32" Content="Hello"></Label>
                    </StackPanel>
                </DockPanel>
            </Border>
        </Canvas>
    </Grid>
4

2 に答える 2

4

これは、キャンバスに Width と Height を設定していないためです。キャンバスの場合、ActualWidth プロパティと ActualHeight プロパティ (レイアウトに使用される) の既定値は 0 です。

これは、キャンバスに背景を設定することでテストできます。この場合、前述の理由により、背景色はレンダリングされません。

これを回避するには、次のいずれかを実行します。

  1. 子のサイズに基づいて適応する別のコンテナー (たとえば、グリッド) を選択します。
  2. キャンバスの幅と高さを明示的に設定します。
于 2013-09-23T20:16:05.047 に答える