Элемент управления WPF внутри ElementHost невидим

У меня есть элемент управления WPF (ICSharpCode.AvalonEdit.TextEditor) в проекте Winforms внутри ElementHost.

Я подтвердил с помощью отладчика, что TextEditor фактически установлен как дочерний элемент ElementHost, и все его свойства устанавливаются правильно, он просто невидим и с ним невозможно взаимодействовать (как если бы вы установили свойство IsVisible на false).

Появляется ElementHost, и я могу с ним взаимодействовать, но скорее дочерний элемент управления не отображается. Я проверил, что свойства Visiblity и IsVisible TextEditor такие, какими они должны быть.

На самом деле я никогда не писал приложение WPF, поэтому пробуйте любые предложения, независимо от того, насколько просто это может означать, что мой элемент управления WPF невидим. Это может быть связано с ElementHost, самим элементом управления или с определенным поведением AvalonEdit.

Какие-либо предложения?


person Migwell    schedule 21.12.2010    source источник
comment
Вы установили какую-либо ширину и высоту или установили VerticalAlignment и HorizontalAlignment в элементе управления wpf?   -  person Rune Andersen    schedule 21.12.2010
comment
Для вертикального и горизонтального выравнивания установлено значение «Растяжка», но для ширины и высоты установлено значение NaN (lol). Как это произошло? Как изменить размер TextBox в соответствии с ElementHost?   -  person Migwell    schedule 21.12.2010
comment
Вы пробовали вставить простой элемент управления - например, кнопку - в свой elementhost? Winforms может делать странные вещи :) И в какой момент вы вставляете elementhost - в конструктор или в какое-то странное событие (например, OnLayout, OnPaint и т. Д.)   -  person Rune Andersen    schedule 21.12.2010
comment
Я пытался столкнуться с той же проблемой, что и у вас. Я создал новое приложение Winforms и добавил HostElement в форму. В исходном коде я написал TextEditor te = new TextEditor (); this.elementHost1.Child = te; И это работает   -  person Kirill Lykov    schedule 21.12.2010
comment
Я тестировал кнопку, и она работала нормально. Так что это может быть поведение AvalonEdit ...   -  person Migwell    schedule 22.12.2010
comment
Также только что подтвердил, что ширина / высота и фактическая ширина / высота не являются NaN, я просто проверял, прежде чем они были фактически загружены.   -  person Migwell    schedule 22.12.2010
comment
Что произойдет, если вы измените размер окна winforms? Он запускает обновление - если он имеет эффект, вы можете добавить обновление. Вы также можете попробовать вручную вызвать Measure and Arrange в AvalonEdit.   -  person Rune Andersen    schedule 22.12.2010


Ответы (1)


Оказывается, я устанавливал для свойства поля TextEditor слишком большое число, например:

TextEditor.Margin = 1000;

И эта наценка покрывала весь контроль.

person Migwell    schedule 09.01.2011