无法使用WinForm中的WPF控件填充整个空间

本文关键字:填充 控件 空间 WPF 中的 WinForm | 更新日期: 2023-09-27 17:58:14

我创建了Wpf UserControl,并在WinForm中托管它。

<UserControl x:Class="Sapphire.WpfUserControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" Height="527" Width="992">
<Canvas x:Name="videoCanvas" HorizontalAlignment="Left"  Margin="10,10,0,0" VerticalAlignment="Top" >
    <Label Canvas.ZIndex="2" Content="Label" Canvas.Left="165" Canvas.Top="50" Width="125" Foreground="#FFFFFEFF"/>
    <MediaElement x:Name="videoElement" Canvas.ZIndex="1" Canvas.Left="10" Canvas.Top="10" />
</Canvas>

如设计器文件中所示,此WPF控件通过HostElement:托管

            // 
        // elementHost1
        // 
        this.elementHost1.Dock = System.Windows.Forms.DockStyle.Fill;
        this.elementHost1.Location = new System.Drawing.Point(0, 0);
        this.elementHost1.Name = "elementHost1";
        this.elementHost1.Size = new System.Drawing.Size(1130, 593);
        this.elementHost1.TabIndex = 2;
        this.elementHost1.Text = "elementHost1";
        this.elementHost1.Child = this.wpfUserControl1;

所以看起来一切都是正确的。您还可以看到DockStyle是Fill。但是,WPF控件不会填充整个WinForm,并且总是以设计器中设置和显示的大小显示。

我从Canvas和Canvas包含的MediaElement中删除了Height和Width,但它没有任何效果。。。

如果有人能指出我在这里做错了什么,我将不胜感激——我是WPF的新手。

无法使用WinForm中的WPF控件填充整个空间

您需要删除<UserControl>WidthHeight,以便包含的ElementHost控制包含元素的大小:

<UserControl x:Class="Sapphire.WpfUserControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d">

如果您想在设计器中使用特定的大小,可以使用d:DesignHeightd:DesignWidth属性:

<UserControl x:Class="Sapphire.WpfUserControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" d:DesignHeight="527" d:DesignWidth="992">