2016-07-23 67 views
1

我創建了Wpf UserControl並將其託管在WinForm中。無法在WinForm中使用WPF控件填充整個空間

<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,並且總是顯示在Designer中設置和顯示的大小。

我刪除無論從帆布和MediaElement的是畫布包含高度和寬度,但它並沒有任何作用......

我會很感激,如果有人能指出我在做什麼錯在這裏 - 我對WPF來說是新的。

+0

http://stackoverflow.com/questions/19393774/how-to-make-all-controls-resize-accordingly-proportionally-when-window-is-maximi –

+0

我不知道你指的是什麼建議做的代碼 - 我有具體問題,不明白我在做什麼錯...比較你的代碼不完全是蘋果對蘋果:有點不同的問題不是嗎? –

回答

0

您需要刪除Width<UserControl>Height使含有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"> 
+0

我完全按照你的建議做了,但它沒有幫助... –

+0

我觀察到的另一條信息: 如果我增加尺寸: mc:Ignorable =「d」d:DesignHeight =「800」d:DesignWidth = 「1900」 它反映在設計師,但不是在運行時 - 屏幕上的尺寸保持與以前一樣......所以我想知道罪魁禍首是什麼...... –

+0

順便說一下,它在設計器中顯示自動(1900)和分別爲寬度和高度自動(1060)... –

相關問題