Xml 如何使用按钮单击从另一个xaml窗口打开xaml窗口?

Xml 如何使用按钮单击从另一个xaml窗口打开xaml窗口?,xml,xaml,c#,Xml,Xaml,C#,OP.show()正在引发错误 这是一个用户控件窗体。打开一个窗口并关闭第一个窗口: private void Button_Click(object sender, System.Windows.RoutedEventArgs e) { Win1 OP= new Win1(); OP.show(); } 你说Win1是“它是一个usercontrol表单”(重点是我的) 如果Win1实际上是类型UserContr

OP.show()正在引发错误


这是一个用户控件窗体。

打开一个窗口并关闭第一个窗口:

private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            Win1 OP= new Win1();
            OP.show();
        }

你说
Win1
是“它是一个usercontrol表单”(重点是我的)

如果
Win1
实际上是类型
UserControl
,问题在于类型
UserControl
没有定义
Show()
方法。因此,它不能作为窗口“打开”

要解决此问题,您需要打开一个窗口,并将UC作为该窗口的内容:

private void Button_Click(object sender, RoutedEventArgs e)
    {            
        window2 win2= new window2();
        win2.Show();
        this.Close();
    }

作为旁注,您可以在App.xaml中使用
UserControl
作为
StartupUri
,因为框架认识到它不是一个窗口并为它创建了一个窗口,所以它可以工作。

您不能直接显示UserControl,您应该在另一个窗口中呈现您的UserControl

喜欢


无法将UserControl作为窗口或对话框打开。最好通过代码隐藏或XAML将usercontrol添加到某个窗口中,然后打开该窗口。
别忘了设置该窗口的DataContext。请记住,父控件/窗口的datacontext将被子控件/用户控件继承。

如果您想像弹出窗口一样操作:

private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
  UserControl1 uc1 = new UserControl1();

  var win = new MainWindow();

  win.Content = win1;

  win.Show();
}

所有这些答案都很好,但是它们没有利用这些特性。如果要隐藏/关闭当前窗口,那么这是旧的
WinForms
窗口管理的一个很好的替代方案。不要创建多个窗口,而是创建页面并在主窗口中使用单帧控件简单地显示它们:

private void btn1_click(object sender, RoutedEventArgs e)
{
    newWin win2 = new newWin();
    win2.Show():
}

现在将显示联系人页面。使用此方法可确保窗口属性标准化。一个窗口来统治他们所有人

不包含“show”的定义谢谢Murmel!我用一些例子更新了回复。
private void btn1_click(object sender, RoutedEventArgs e)
{
    newWin win2 = new newWin();
    win2.Show():
}
<Grid>
    <Frame Source="/Menu.xaml" NavigationUIVisibility="Hidden"/>
</Grid>
private void Button_Click(object sender, RoutedEventArgs e)
{
    NavigationService.Navigate(new Uri("/Contact.xaml", UriKind.Relative));
}