2015-09-23 3 views
0

У меня возникла проблема с элементом управления WinFormsHost в моем приложении WPF.WIndows Forms Host Backgorund buggy

я не знаю, чтобы описать это 100% по себе, так что я сделал видео, чтобы помочь мне:

https://youtu.be/KpcWdPCmahI

Всякий раз, когда я пытаюсь установить значение Brush которого Color.Value.A свойства равно 255 (FF в шестнадцатеричном виде) до свойства Background моего WinFormsHost, цвет сразу возвращается.

В других словах вы можете знать Colors.White Вернул бы Color со значением #FFFFFFFF. Фон вернется к предыдущему цвету, пытаясь установить это.

Однако если установить А (значение Альфа Color «s до 254 ака #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; 
} 
+0

Я просмотрел ваше видео, прочитал ваше описание и не знаю, в чем проблема, которую вы пытаетесь исправить. Возможно, если вы уточните, включите код и опишите, в чем проблема? – user3690202

+0

Обновлено, спасибо :) Надеюсь, это объяснит немного лучше. – ImaBrokeDude

+0

Что происходит, когда вы устанавливаете фон элемента управления внутри WindowsHostControl вместо фона самого WindowsHostControl? У меня никогда не возникало проблем с настройкой фона элементов управления WinForms, используемых в WPF. Как насчет жесткого кодирования цвета, чтобы проверить, является ли это ошибкой в ​​вашей логике со списком? – user3690202

ответ

0

из-системы, которая была на месте для дизайнера не полностью понял, я назначая цвет неправильно.

весь вид вы видите в области конструктора является System.Windows.Forms.UserControl. Решением было установить значение ControlStyle.AllPaintingInWmPaint в значение true и установить UserControl.BackColor во время вызова OnPaint().