![](/img/trans.png)
[英]How to open another view on button click without creating a Window in Titanium?
[英]How do I open a xaml window from another xaml window using button click?
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
Win1 OP= new Win1();
OP.show();
}
OP.show()抛出一个错误。
它是一个用户控制表单。
你说Win1
是“它是一个用户控制表单”。 (重点是我的)。
如果Win1
实际上是UserControl
类型,则问题是UserControl
类型没有定义Show()
方法。 因此它不能作为窗口“打开”。
要解决此问题,您需要打开一个窗口并将UC作为该窗口的内容:
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
Win1 OP= new Win1();
var host = new Window();
host.Content = OP;
host.Show();
}
作为旁注,您可以在App.xaml中将UserControl
用作StartupUri
,它将起作用,因为框架识别出它不是窗口并为其创建窗口。
所有这些答案都很好,但是他们没有利用WPF的导航功能。 如果你打算隐藏/关闭当前窗口,那么这是旧的WinForms
窗口管理的一个很好的替代品。 而不是创建多个窗口,创建页面,只需使用MainWindow中的单个Frame控件显示它们:
<Grid>
<Frame Source="/Menu.xaml" NavigationUIVisibility="Hidden"/>
</Grid>
然后,当您想要显示另一个“窗口”(实际上是一个页面)时,您可以使用NavigationService
来更改帧源。 从菜单页面代码后面:
private void Button_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/Contact.xaml", UriKind.Relative));
}
现在将显示“联系”页面。 使用此方法可确保窗口属性标准化。 一个窗口统治他们所有!
打开一个窗口并关闭第一个窗口:
private void Button_Click(object sender, RoutedEventArgs e)
{
window2 win2= new window2();
win2.Show();
this.Close();
}
您无法打开UserControl作为窗口或对话框。 最好通过后面的代码或XAML将usercontrol添加到某个Window中,然后打开该窗口。 不要忘记设置该窗口的DataContext。 请记住,父控件/窗口的datacontext将由子控件/用户控件继承。
您无法直接显示usercontrol,您应该在另一个窗口中呈现您的usercontrol。
喜欢。
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
UserControl1 uc1 = new UserControl1();
var win = new MainWindow();
win.Content = win1;
win.Show();
}
如果你想像弹出窗口那样做:
private void btn1_click(object sender, RoutedEventArgs e)
{
newWin win2 = new newWin();
win2.Show():
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.