Пользовательский элемент управления не отображается в окне WPF? - PullRequest
0 голосов
/ 05 декабря 2010

У меня есть пользовательский элемент управления WPF под названием TimeoutPanel, который я пытаюсь использовать.Однако, если я пытаюсь добавить его в свое окно из файла .cs, он фактически не отображается.

Мне нужно иметь возможность получить дескриптор окна, которому принадлежит экран тайм-аута.

TimeoutPanel tp = new TimeoutPanel(this);
tp.Visibility = Visibility.Visible;

Я был бы очень признателен, если бы кто-нибудь мог указать, что я делаю неправильно!

Редактировать: Вот конструктор для моей TimeoutPanel

public TimeoutPanel(Window parent)
{
    this.InitializeComponent();
    parentWindow = parent;
}

Явызов его со следующим кодом в файле .cs для окна Homescreen:

TimeoutPanel tp = new TimeoutPanel(this);
MainGrid.Children.Add(tp);

Сбой при исключении: Дополнительная информация: Невозможно создать объект типа 'TicketBooth.TimeoutPanel'.Ошибка CreateInstance, что может быть вызвано отсутствием общедоступного конструктора по умолчанию для TicketBooth.TimeoutPanel.Ошибка в объекте 'System.Windows.Controls.Grid' в файле разметки 'TicketBooth; component / homescreen.xaml' Строка 174, позиция 10.

Спасибо!

Ответы [ 2 ]

1 голос
/ 05 декабря 2010

То, что вы делаете, никоим образом не помещает этот UserControl в окно вашего приложения WPF. Вам нужно поместить UserControl на дочернего элемента в Window. Установка Visiblity фактически не помещает UserControl как дочерний элемент любого контейнера.

Я предполагаю, что Сетка - это ваш контейнер в Окне. Если так; чтобы добавить свой UserControl в Grid, просто добавьте его в качестве дочернего элемента в Grid. Вам нужно будет указать имя вашей Grid, прежде чем ссылаться на нее в коде позади ...

TimeoutPanel tp = new TimeoutPanel(this);
myGrid.Children.Add(tp);
0 голосов
/ 05 декабря 2010

вам нужно добавить этот элемент управления в некоторую коллекцию родительских элементов управления.

Предположим, у вас есть панель стека stckPanel в главном окне, поэтому, если вы хотите показать этот созданный элемент управления в этой панели стека, вам нужносделать следующий код

TimeoutPanel tp = new TimeoutPanel(this);
stckPanel.Children.Add(tp);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...