我有一个名为TimeoutPanel的自定义WPF用户控件,我正在尝试使用它。但是,如果我尝试将它从.cs文件添加到我的窗口,它实际上不会显示。
我需要能够获得拥有超时屏幕的窗口的句柄。
TimeoutPanel tp = new TimeoutPanel(this);
tp.Visibility = Visibility.Visible;
如果有人能指出我做错了什么,我真的很感激!
编辑: 这是我的TimeoutPanel的构造函数
public TimeoutPanel(Window parent)
{
this.InitializeComponent();
parentWindow = parent;
}
我在主屏幕窗口的.cs文件中使用以下代码调用它:
TimeoutPanel tp = new TimeoutPanel(this);
MainGrid.Children.Add(tp);
崩溃异常: 附加信息:无法创建“TicketBooth.TimeoutPanel”类型的对象。 CreateInstance失败,这可能是因为没有'TicketBooth.TimeoutPanel'的公共默认构造函数。标记文件'TicketBooth; component / homescreen.xaml'中对象'System.Windows.Controls.Grid'出错。第174行位置10.
谢谢!
答案 0 :(得分:1)
您正在做的事情绝对不会将UserControl放在WPF应用程序的Window上。您需要将UserControl放在Window中的子项上。设置Visiblity实际上并不将UserControl作为任何容器的子项。
我的猜测是Grid是Window中的容器。如果是这样;要将UserControl添加到网格中,只需将其作为子网格添加到网格中即可。在引用后面的代码中,您需要为Grid命名...
TimeoutPanel tp = new TimeoutPanel(this);
myGrid.Children.Add(tp);
答案 1 :(得分:0)
您需要将此控件添加到某个父控件集合中。
假设您在主窗口中有一个名为stckPanel的堆栈面板,因此如果要在此堆栈面板下显示此创建的控件,则需要执行以下代码
TimeoutPanel tp = new TimeoutPanel(this);
stckPanel.Children.Add(tp);