0

WindowsFormControl でホストしようとしている winforms カスタム コントロールがあります。コントロールの高さを正しく動作させるためにいくつかの問題が発生しているようです。

実際に埋め込まれた WindowsFormControl を含む StackPanel を含むグリッドがあります。WindowsFormControl の高さが、StackPanel で使用可能なすべての高さを占めるようにしたいと考えています。

実際の winforms カスタム ユーザー コントロールの高さは、WindowsFormHost 内で使用可能な高さ領域を埋めるため、正しく動作します。

何が起こっているのか完全にはわかりません。

Grid  Grid.Row="0" Background="#7A66BAD2">
        <Grid.RowDefinitions>
            <RowDefinition Height="9*"/>
            <RowDefinition Height="1*"/>
        </Grid.RowDefinitions>

        <StackPanel Grid.Row="0" >

            <WindowsFormsHost Name="RPIWinformsHost" Height="700"
                              Background="Orange" 
                              HorizontalAlignment="Stretch" 
                              VerticalAlignment="Stretch"
                              Margin="30,10,30,10">
                <rpiRTFControl:RPIReportDesignControl Name="RPIRTFControl" />

            </WindowsFormsHost>

        </StackPanel>

        <Border BorderBrush="#CCCCFF" Grid.Row="1" BorderThickness="6" 
                HorizontalAlignment="Stretch" Margin="30,0,30,0">
            <StackPanel Name="spCommands" 
                Orientation="Horizontal">

                <Button Name="btnTest" Content="Test" Height="25" Width="134"                                            
            FontSize="13" FontWeight="Bold" 
            Margin="10,0,10,0"
            Click="btnTest_Click" />

             </StackPanel>
        </Border>

    </Grid> 

これを正しく動作させるための正しいテクニック/トリックは何ですか?

ありがとう、ジョンB

4

1 に答える 1

1

StackPanel はそのように使用することを意図したものではありません。通常は、実行時までいくつあるか分からない一連の自動サイズ調整アイテム用です。StackPanel を削除して、WindowsFormsHost をグリッドの直下に置くだけです。

<WindowsFormsHost Name="RPIWinformsHost" Height="700" Grid.Row="0"
                Background="Orange" 
                HorizontalAlignment="Stretch" 
                VerticalAlignment="Stretch"
                Margin="30,10,30,10">
        <rpiRTFControl:RPIReportDesignControl Name="RPIRTFControl" />
</WindowsFormsHost>
于 2013-04-26T15:32:48.677 に答える