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