Странный пользовательский интерфейс полосы прокрутки в размещенном композитном элементе управления WPF - PullRequest
2 голосов
/ 03 мая 2011

Мои окна формируют приложение AvalonEdit (рассматриваемый составной элемент управления WPF) в одной из его форм для удовлетворения его требований к редактированию текста.Вот код, который я использую:

WPFHost = gcnew ElementHost();
TextField = gcnew AvalonEdit::TextEditor();
WPFHost->Dock = DockStyle::Fill;
WPFHost->Child = TextField;

TextField->Options->AllowScrollBelowDocument = false;
TextField->Options->EnableEmailHyperlinks = false;
TextField->Options->EnableHyperlinks = true;
TextField->Options->RequireControlModifierForHyperlinkClick = true;
TextField->ShowLineNumbers = true;

ContainerControl->Controls->Add(WPFHost); // the container is a panel

Код компилируется и выполняется нормально, за исключением полос прокрутки - http://dl.dropbox.com/u/2584752/avalonEditBug.png.Щелчок правой кнопкой мыши по левому краю панели вызывает исключение ArgumentOutOfRange.

Странно, я не смог воспроизвести проблему, когда попытался разместить элемент управления во вновь созданном примере проекта.Я использую последнюю сборку текстового редактора и установил все необходимые сборки.

РЕДАКТИРОВАТЬ: Обертывание редактора в пользовательском контроле также не помогает.

Ответы [ 4 ]

1 голос
/ 10 мая 2011

Вы говорите, что элемент управления отлично работает в новом / пустом проекте, но не в том, что вам нужно, и меня больше всего интересует конфликты.В проекте, который вы действительно хотите по сравнению с проектом, в котором он работал, в чем различия?.NET версия?Ссылка на сборку из каталога в одном, а вне GAC в другом?

Трудно сказать, что элемент управления не работает для вас, когда он работает в другом месте, поэтому единственное, что я могу предложитьэто просто погрузиться глубоко в различия двух проектов.

Удачи.

0 голосов
/ 07 августа 2011

Я реализовал обходной путь для проблемы, упомянутой в этой теме [ Синхронизация WPF ScrollViewer с WinForms ScrollBar ].

0 голосов
/ 05 мая 2011

попытайтесь создать сетку WPF как дочерний элемент ElementHost и поместите редактор в эту сетку. Другой способ - это создать UserControl, иметь редактор в этом элементе управления и использовать элемент управления в приложении Winform. Такой подход помог мне пару раз.

0 голосов
/ 05 мая 2011

Для меня это похоже на ошибку макета.Возможно, WPFHost неожиданно измеряет TextField.

Я могу предложить установить конкретные ширину и высоту для самого TextField.Если это решит проблему, вы можете настроить их как размер изменений элемента управления WPFHost или попробовать установить MaxHeight / Width, иногда они помогают и сохраняют некоторый код для обновлений Width / Height.

...