Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf WIndows窗体主机后台错误_Wpf - Fatal编程技术网

Wpf WIndows窗体主机后台错误

Wpf WIndows窗体主机后台错误,wpf,Wpf,我的WPF应用程序中的WinFormsHost控件有问题 我不知道自己要100%地描述它,所以我制作了一个视频来帮助我: 每当我尝试将Color.Value.a属性值为255 FF(十六进制)的笔刷设置为WinFormsHost的背景属性时,颜色会立即恢复 换句话说,您可能知道颜色。白色将返回一个值为FFFFFFFF的颜色。如果尝试设置此设置,背景将恢复为以前的颜色 但是,如果我将颜色的Alpha值设置为254 aka FEFFFFFF,则设置的颜色不会恢复到以前的颜色 我写这篇文章是为了试着解

我的WPF应用程序中的WinFormsHost控件有问题

我不知道自己要100%地描述它,所以我制作了一个视频来帮助我:

每当我尝试将Color.Value.a属性值为255 FF(十六进制)的笔刷设置为WinFormsHost的背景属性时,颜色会立即恢复

换句话说,您可能知道颜色。白色将返回一个值为FFFFFFFF的颜色。如果尝试设置此设置,背景将恢复为以前的颜色

但是,如果我将颜色的Alpha值设置为254 aka FEFFFFFF,则设置的颜色不会恢复到以前的颜色

我写这篇文章是为了试着解决现在这种奇怪的行为

private void ColorPicker_SelectionChanged(object sender, RoutedPropertyChangedEventArgs<Color?> e)
{
    Brush brush;
    if (e.NewValue == null) return;
    if (e.NewValue.Value.A == 255)
    {
        var color = Color.FromArgb((byte) (e.NewValue.Value.A - 1), e.NewValue.Value.R, e.NewValue.Value.G,
            e.NewValue.Value.B);
        brush = new SolidColorBrush(color);
        ((ColorPicker) sender).SelectedColor = color;
    }
    else
    {
        brush = new SolidColorBrush((Color)e.NewValue);
    }
    WindowHostControl.Background = brush;
}

由于设计师没有完全理解系统,我分配的颜色不正确


在设计器区域中看到的整个视图是System.Windows.Forms.UserControl。解决方案是将ControlStyle.AllPaintingInWmPaint设置为true,并在OnPaint调用期间设置UserControl.BackColor。

我观看了您的视频,阅读了您的描述,但不知道您试图解决的问题是什么。如果您详细说明,包括代码,并描述问题所在?更新,谢谢:我希望这能更好地解释问题。当您在WindowsHostControl中设置控件的背景而不是WindowsHostControl本身的背景时,会发生什么情况?我以前从未遇到过设置WPF中使用的WinForms控件的背景的问题。如何对颜色进行硬编码,以测试它是否是组合框逻辑中的错误?@user3690202您好,主机中的控件只是一个Windows.Forms.UserControl,用于注入称为Perspex的UI框架的视觉效果。我不想更改孩子的背景,因为这会破坏正在开发的控件可能设置的颜色选项。这基本上是一个VisualStudio设计器类型的东西