WPF ElementHost в Winforms падает (Windows) при максимизации - PullRequest
0 голосов
/ 11 октября 2011

Я пытаюсь интегрировать новый элемент управления WPF в существующее приложение WinForms, и я использую ElementHost (Dock-Fill) для размещения следующего XAML UserControl.(.NET 4)

Когда я устанавливаю WinForm на Maximized, происходит сбой всей моей операционной системы.Я обновил драйверы NVidia до последней версии для моей видеокарты, но у меня все еще есть BlueScreen в nvlddmkm.sys.Я искал других, которые испытывают сбои, подобные этой, но не нашел ничего, кроме как «обновить драйверы видеокарты».

CustomerOrderReadyControl, указанный в UserControl, находится в 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>

Подпункт InitializeComponent в моих WinForms действительно настолько прост.

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, то все работает нормально.

1 Ответ

2 голосов
/ 02 ноября 2011

Оказывается, это была видеокарта (NVidia NVS295), просто не поддерживающая операции WPF. В конечном итоге не имело значения, было ли это в полномасштабном приложении WPF или встроено в ElementHost, если на экране отображается полноэкранный режим (1900x1200), а затем машина синего цвета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...