Как динамически назначить UserControl как дочерний элемент ElementHost формы? - PullRequest
0 голосов
/ 24 сентября 2019

Я буду настолько кратким и точным, насколько это возможно.

Я пытаюсь добиться того, чтобы я хотел иметь одно окно и несколькоUserControls (с различными размерами) должен отображаться внутри указанного окна.Очевидно, что я поместил ElementHost внутри окна, чтобы действовать в качестве контейнера для UserControls, и пытаюсь динамически назначить UserControls свойству .Child ElementHost.

Так в чем же проблема?Я подумал, что если я передам UserControls в качестве аргументов для Конструктора Окна, тогда я смогу легко присвоить их ElementHost.Child.Но, как мы все знаем, все пошло не так, и вот я здесь.

Вот мои усилия по реализации:

public partial class WindowShell : Form
    {
        public WindowShell (UserControl hostedContent)
        {
            InitializeComponent();

            // I tried to simply pass the parameter to the ElementHost. Doesn't work.
            // userControlHost is the ElementHost of the window.

            this.userControlHost.Child = hostedContent;
        }
    }

Ошибка, которую я здесь получаю, заключается в том, что hostedContent не может бытьmsgstr "неявно преобразуется в System.Windows.UIElement".Все, что нужно для работы, - это то, что я сначала создаю экземпляр UserControl с new, но в этом-то и дело;Я не хочу, чтобы это окно было специально выделено для одного UserControl.

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

Я уверен, что могу просто передать string в качестве аргумента для окна и иметь метод для проверки этой строкии создать соответствующий UserControl, но я действительно хочу сделать это правильно.Любая помощь очень ценится.

Спасибо.

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