我正在尝试将新的WPF控件集成到现有的WinForms应用程序中,并且我正在使用ElementHost(Dock-Fill)来托管以下XAML UserControl。 (.NET 4)
当我将WinForm设置为最大化时,我的整个操作系统崩溃了。我已更新到我的视频卡的最新NVidia驱动程序,但我仍然在nvlddmkm.sys中使用BlueScreen。我一直在寻找其他正在经历此类崩溃的人,但除了“更新视频卡驱动程序”之外,还没有找到任何其他内容。
UserControl中指定的CustomerOrderReadyControl在C#中,但是它只是一个基本的UserControl,显示我没有包含它的消息,但如果您认为我应该,请在评论中指定。
当我最大化表单时,是否有一个我错过的设置可能导致我的应用程序导致计算机蓝屏? 鉴于现有应用程序是非常重的GDI +用于渲染应用程序的其他部分,还有其他方法可以使这个场景工作吗?
<UserControl x:Class="WPFDisplay.CustomerOrderDisplayControl"
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="480" d:DesignWidth="640" xmlns:my="clr-namespace:WPFDisplay">
<UserControl.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#FFEEEEEE" Offset="0.05"/>
<GradientStop Color="#FF333333" Offset="0.95"/>
</LinearGradientBrush>
</UserControl.Background>
<Grid Name="mainGrid">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Name="imageRow" Height="125" />
</Grid.RowDefinitions>
<my:CustomerOrderReadyControl Grid.Row="0" x:Name="customerOrderReadyControl1"
Message="The Message" />
<Image Margin="0,0,6,7" Name="displayLogo" Grid.Row="1" VerticalAlignment="Bottom"
HorizontalAlignment="Right" Width="302" Height="107" Stretch="None" IsHitTestVisible="False" />
</Grid>
</UserControl>
我的WinForms中的InitializeComponent子实际上非常简单。
Private Sub InitializeComponent()
Me.ElementHost1 = New System.Windows.Forms.Integration.ElementHost()
Me.CustomerOrderDisplayControl1 = New WPFDisplay.CustomerOrderDisplayControl()
Me.SuspendLayout()
'
'ElementHost1
'
Me.ElementHost1.Dock = System.Windows.Forms.DockStyle.Fill
Me.ElementHost1.Location = New System.Drawing.Point(0, 0)
Me.ElementHost1.Name = "ElementHost1"
Me.ElementHost1.Size = New System.Drawing.Size(1058, 617)
Me.ElementHost1.TabIndex = 0
Me.ElementHost1.Text = "ElementHost1"
Me.ElementHost1.Child = Me.CustomerOrderDisplayControl1
'
'CustomerOrderDisplayForm
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1058, 617)
Me.Controls.Add(Me.ElementHost1)
Me.Name = "CustomerOrderDisplayForm"
Me.Text = "CustomerOrderDisplayForm"
Me.ResumeLayout(False)
End Sub
编辑: 其他信息..如果我在Pure WPF应用程序中托管此控件并最大化WPF表单,那么一切正常。
答案 0 :(得分:2)
原来这是视频卡(NVidia NVS295)没有处理WPF操作。最终无论是在完整的WPF应用程序中还是嵌入在ElementHost中,如果屏幕显示全屏(1900x1200),那么机器都会进行蓝屏。