2014-06-18 38 views
1

尽管我完全是WPF的新手,但我需要编写一个代码,在单击按钮后,应用程序应该打开另一个xaml。在网络上搜索后,我按照以下方式进行:在WPF中从一个xaml导航到另一个

1.我创建了两个xaml文件,即'Window1.xaml'和'Window2.xaml'。

2.In我 '的App.xaml' 文件,我让:

<Application x:Class="DiagramDesigner.App" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   
    StartupUri="Window1.xaml"> 

3.Then在我的 'Window1.xaml',我创建了一个按钮:

<Button Name="Button" Click="Button_Click_1" MouseEnter="Button_MouseEnter_1" IsDefault="True" 
     HorizontalAlignment="Center" VerticalAlignment="Center"> 
    Start 
</Button> 

4。在我的“Windwo1.xaml.cs”的文件,我创建了这两个功能:点击按钮后

private void Button_Click_1(object sender, RoutedEventArgs e) 
    { 
    } 

    private void Button_MouseEnter_1(object sender, MouseEventArgs e) 
    { 
    } 

5.Then开“Window2.xaml”,我改成:

private void Button_Click_1(object sender, RoutedEventArgs e) 
    { 
     NavigationService service = NavigationService.GetNavigationService(this); 
     service.Navigate(new Uri("Window2.xaml", UriKind.RelativeOrAbsolute)); 
    } 

但是,这给了我错误,说service为空,程序崩溃了。我没有想出任何方法来解决这个问题。有什么建议么?谢谢。

回答

3

试试这个:

private void Button_Click_1(object sender, RoutedEventArgs e) 
{ 
    var window = new Window2(); 
    window.ShowDialog(); 
} 

你也应该阅读NavigationService类及其方法的文件,以避免对这一类做什么进一步的混乱。下面是一个很好的开始:http://msdn.microsoft.com/en-us/library/system.windows.navigation.navigationservice.getnavigationservice%28v=vs.110%29.aspx

+0

谢谢您的回答。它给出了一个错误,并说:非静态字段,方法或属性'System.Windows.Window.ShowDialog()'需要一个对象引用。 –

+0

对不起,我的错误,现在它工作正常。 –

相关问题