0

2つの小さなグリッドをホストする親グリッド(「出力」)があります。

小さいグリッドのMainDisplay(基本的にViewBoxに画像を表示し、2つのサブグリッドの残りの300を除くすべての水平方向のスペースを取得したい)と入力(300の固定幅、実際には期待どおりに機能します) 。

私の問題は次のとおりです。

1)親グリッドはすべての水平方向のスペースを消費しません。ViewBoxを使用してグリッドに追加のスペースを配置したいと思います。

'Horizo​​ntalAlignment="Stretch"'と'Width= "*"'を散りばめましたが、画面上のすべてのスペースを占めるわけではありません。

2)画像の幅/高さを取得するためのコードが後ろにあります。高さを明示的に設定しない限り、コードの背後にある幅は高さと幅を取得しようとしてクラッシュします...しかし、幅/高さを明示的に設定すると、使用可能なスペースが取得されないのではないかと心配しています。

コードは次のとおりです。

<Grid x:Name="Output" Background="#1D1D1D" Margin="0,2,0,-2" HorizontalAlignment="Stretch">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="300"/>
    </Grid.ColumnDefinitions>
    <Grid x:Name="MainDisplay" HorizontalAlignment="Stretch" VerticalAlignment="Top" Grid.Column="0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Viewbox Width="Auto" Height="Auto" MinWidth="400" MinHeight="400" x:Name="Scenario4ImageContainer" Stretch="Uniform">
            <Image x:Name="Scenario4Image" PointerPressed="Scenario4Image_PointerPressed" HorizontalAlignment="Stretch"  />
        </Viewbox>
    </Grid>
    <Grid Width="300" x:Name="Input" Grid.Column="1">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0">
            <TextBlock Style="{StaticResource BasicTextStyle}" TextWrapping="Wrap" 
                       Text="Tools" />
            <Grid Margin="0,10,0,0">
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition />
                    <RowDefinition />
                    <RowDefinition />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="230" />
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>

                <Button Grid.Row="0" Grid.Column="0" HorizontalAlignment="Stretch" Background="DarkSlateGray"
                        Content="Draw Mandelbrot set" Click="DrawMandelbrotSet_Click" />
                <TextBlock x:Name="Scenario4DrawMandelbrotDescription" Grid.Row="0" Grid.Column="1" 
                           Style="{StaticResource BasicTextStyle}" TextWrapping="Wrap" VerticalAlignment="Center"
                           Text="Text." />

                <Button x:Name="Scenario4SetSourceButton" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Stretch"
                        Content="Load image using SetSource" Click="LoadImageUsingSetSource_Click" />
                <TextBlock x:Name="Scenario4SetSourceDescription" Grid.Row="1" Grid.Column="1" 
                           Style="{StaticResource BasicTextStyle}" TextWrapping="Wrap" VerticalAlignment="Center"
                           Text="Text." />

                <Button x:Name="Scenario4LoadImageButton" Grid.Row="2" Grid.Column="0" HorizontalAlignment="Stretch" 
                        Content="Load image using PixelBuffer" Click="LoadImageUsingPixelBuffer_Click" />
                <TextBlock x:Name="Scenario4LoadImageDescription" Grid.Row="2" Grid.Column="1" 
                           Style="{StaticResource BasicTextStyle}" TextWrapping="Wrap" VerticalAlignment="Center"
                           Text="Text." />
            </Grid>
        </StackPanel>
    </Grid>
4

1 に答える 1

1

これについて100%確信はありませんが、最初の列定義"*"の代わりに試してください。"Auto"

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="*"/>
    <ColumnDefinition Width="300"/>
</Grid.ColumnDefinitions>
于 2013-02-23T02:54:41.460 に答える