2016-07-23 17 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을 채우지 않으며 디자이너에서 설정되고 표시되는 크기로 항상 표시됩니다.

내가 캔버스에 포함 된 캔버스에서와 MediaElement에에서 모두 높이와 너비를 제거하지만 아무런 영향을 미치지 않았다 ... 누군가가 내가 여기서 잘못하고있는 무슨을 지적 할 수있는 경우

내가 감사하겠습니다 - I 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:DesignHeight을 사용할 수 있으며 d: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

디자이너의 Auto (1900) 및 너비와 높이 각각에 대한 자동 (1060) ... –