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

OP.show() 抛出错误。

它是一个用户控件表单。

4

6 回答 6

7

你说那Win1是“这是一个用户控件表单”。(重点是我的)。

如果Win1实际上是 type 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 中使用UserControlas StartupUri,因为框架识别出它不是窗口并为它创建一个窗口,所以它会起作用。

于 2013-10-22T04:41:25.617 回答
5

所有这些答案都很好,但是它们没有利用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));
}

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

于 2017-10-31T12:49:27.560 回答
2

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

private void Button_Click(object sender, RoutedEventArgs e)
    {            
        window2 win2= new window2();
        win2.Show();
        this.Close();
    }
于 2013-10-21T20:42:36.110 回答
1

您不能将 UserControl 作为窗口或对话框打开。最好通过代码或 XAML 将用户控件添加到某个窗口中,然后打开该窗口。不要忘记设置该窗口的 DataContext。记住父控件/窗口的数据上下文将被子控件/用户控件继承。

于 2013-10-23T12:23:05.667 回答
0

您不能直接显示用户控件,您应该在另一个窗口中呈现您的用户控件。

像。

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

  var win = new MainWindow();

  win.Content = win1;

  win.Show();
}
于 2013-10-22T05:01:02.900 回答
0

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

private void btn1_click(object sender, RoutedEventArgs e)
{
    newWin win2 = new newWin();
    win2.Show():
}
于 2015-07-09T16:34:31.053 回答