在WPF应用程序中添加到WrapPanel时,WindowsFormsHost的内容不可见

时间:2014-01-08 01:06:27

标签: c# .net wpf winforms windows-forms-host

编辑:快速介绍:WindowsFormsHost添加的xaml包含所有内容。由C#添加没有内容--->下面的图片。

当我在WindowsFormsHost的{​​{1}}中插入WrapPanel x:Name = "VideoPanel",然后在 .cs 文件中添加XAML时,视频流的视频在VideoStream videoStream中可见。一切都很好内容可见(截图如下)。

注释:WrapPanel扩展VideoStream

XAML:

System.Windows.Forms.UserControl

.cs文件:

   <WrapPanel x:Name="VideoPanel" >
               <Border BorderBrush="Green" BorderThickness="2">
                        <WindowsFormsHost x:Name="Host" Width="400" Height="400"></WindowsFormsHost>
                    </Border>
   </WrapPanel>

结果(正确的结果):

enter image description here


但是当我想通过C#代码在VideoStream videoStream = new VideoStream(); Host.Child = VideoStream; 中创建和插入WindowsFormsHostVideoStream时,只有边框可见而没有内容。 如何让WrapPanel的内容可见?

我遇到问题的代码:

VideoStream

XAML:

   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;

结果(不正确的):

enter image description here

如何让 <WrapPanel x:Name="VideoPanel" > </WrapPanel> 的内容可见?

1 个答案:

答案 0 :(得分:1)

你的问题就在这一行:

lineBorder.Child = new WindowsFormsHost();

应该是:

lineBorder.Child = formsHost;

您正在创建一个新的windowsformshost而不使用正确的。