C# 在WPF应用程序中添加到WrapPanel时,WindowsFormsHost的内容不可见
编辑:要快速介绍:C# 在WPF应用程序中添加到WrapPanel时,WindowsFormsHost的内容不可见,c#,.net,wpf,winforms,windowsformshost,C#,.net,Wpf,Winforms,Windowsformshost,编辑:要快速介绍:WindowsFormsHost由xaml添加,包含所有内容。由C#添加的没有内容--->下面的图片 当我通过XAML在WrapPanel x:Name=“VideoPanel”中插入WindowsFormsHost,然后在.cs文件中添加VideoStream VideoStream时,视频流的内容在WrapPanel中可见。一切正常内容可见(下面的屏幕截图) Adnotation:VideoStream扩展了System.Windows.Forms.UserControl
WindowsFormsHost
由xaml
添加,包含所有内容。由C#
添加的没有内容--->下面的图片
当我通过XAML
在WrapPanel x:Name=“VideoPanel”
中插入WindowsFormsHost
,然后在.cs文件中添加VideoStream VideoStream
时,视频流的内容在WrapPanel
中可见。一切正常内容可见(下面的屏幕截图)
Adnotation:VideoStream
扩展了System.Windows.Forms.UserControl
XAML:
<WrapPanel x:Name="VideoPanel" >
<Border BorderBrush="Green" BorderThickness="2">
<WindowsFormsHost x:Name="Host" Width="400" Height="400"></WindowsFormsHost>
</Border>
</WrapPanel>
VideoStream videoStream = new VideoStream();
Host.Child = VideoStream;
WindowsFormsHost formsHost = new WindowsFormsHost();
VideoStream videoStream = new VideoStream();
formsHost.Child = videoStream;
Border lineBorder = new Border();
lineBorder.BorderBrush = Brushes.Green;
lineBorder.BorderThickness = new Thickness(2);
lineBorder.Child = new WindowsFormsHost();
VideoPanel.Children.Add(lineBorder);
videoStream.Height = 400;
videoStream.Width = 400;
lineBorder.Width = 400;
lineBorder.Height = 400;
formsHost.Width = 400;
formsHost.Height = 400;
<WrapPanel x:Name="VideoPanel" >
</WrapPanel>
结果(正确结果):
但是当我想通过C#code在
WrapPanel
中创建和插入WindowsFormsHost
和VideoStream
时,只有边框可见,没有内容如何使视频流的内容可见?
我遇到问题的代码:
<WrapPanel x:Name="VideoPanel" >
<Border BorderBrush="Green" BorderThickness="2">
<WindowsFormsHost x:Name="Host" Width="400" Height="400"></WindowsFormsHost>
</Border>
</WrapPanel>
VideoStream videoStream = new VideoStream();
Host.Child = VideoStream;
WindowsFormsHost formsHost = new WindowsFormsHost();
VideoStream videoStream = new VideoStream();
formsHost.Child = videoStream;
Border lineBorder = new Border();
lineBorder.BorderBrush = Brushes.Green;
lineBorder.BorderThickness = new Thickness(2);
lineBorder.Child = new WindowsFormsHost();
VideoPanel.Children.Add(lineBorder);
videoStream.Height = 400;
videoStream.Width = 400;
lineBorder.Width = 400;
lineBorder.Height = 400;
formsHost.Width = 400;
formsHost.Height = 400;
<WrapPanel x:Name="VideoPanel" >
</WrapPanel>
XAML:
<WrapPanel x:Name="VideoPanel" >
<Border BorderBrush="Green" BorderThickness="2">
<WindowsFormsHost x:Name="Host" Width="400" Height="400"></WindowsFormsHost>
</Border>
</WrapPanel>
VideoStream videoStream = new VideoStream();
Host.Child = VideoStream;
WindowsFormsHost formsHost = new WindowsFormsHost();
VideoStream videoStream = new VideoStream();
formsHost.Child = videoStream;
Border lineBorder = new Border();
lineBorder.BorderBrush = Brushes.Green;
lineBorder.BorderThickness = new Thickness(2);
lineBorder.Child = new WindowsFormsHost();
VideoPanel.Children.Add(lineBorder);
videoStream.Height = 400;
videoStream.Width = 400;
lineBorder.Width = 400;
lineBorder.Height = 400;
formsHost.Width = 400;
formsHost.Height = 400;
<WrapPanel x:Name="VideoPanel" >
</WrapPanel>
结果(不正确):
如何使
视频流的内容可见?
您的问题在于这一行:
lineBorder.Child = new WindowsFormsHost();
应该是:
lineBorder.Child = formsHost;
您正在创建新的windowsformshost,但未使用正确的windowsformshost