如何获得我的WPF WindowsFormsControl的高度来填充包含的StackPanel?

问题描述:

我有一个winforms自定义控件,我试图在WindowsFormControl中承载。 我似乎遇到一些问题,让控制的高度正确行为。如何获得我的WPF WindowsFormsControl的高度来填充包含的StackPanel?

我有一个网格,它包含一个StackPanel,其中包含实际嵌入的WindowsFormControl。我希望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> 

让这种行为正确的正确方法/技巧是什么?

感谢, JohnB

+0

您不应该使用StackPanel,而是使用GridView。这将拉伸你的控制。 – Kenneth 2013-04-26 15:30:33

+0

你应该接受一些你的问题的答案。我也注意到你还没有在这个网站投过一次票。在那工作。 – 2013-04-26 16:18:22

的StackPanel并不意味着使用这种方式,它通常是一个系列,你不知道有多少会出现,直到运行时自动调整大小的物品。只需删除StackPanel并让WindowsFormsHost直接位于Grid下。

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