我有什麼應該是我正在處理的一個非常簡單的桌面應用程序,但我遇到了一些基本任務。我正在使用Visual Studio 2013.如何將Page1.xaml打開到MainWindow.xaml中
我從一個空白的WPF模板創建了一個項目。我創建了一個名爲Page1.xaml的新頁面,以配合默認的MainWindow.xaml窗口。
在我的MainWindow.xaml窗口中,我有Grid並且網格內部是一個Image。
<Grid MouseDown="Grid_MouseDown_1" Cursor="Hand" >
<Image Name="ImageIntro" Source="images/Stories-intro.jpg" Stretch="None" />
</Grid>
網格有一個MouseDown事件,這樣我就可以檢測到用戶在網格內的任何地方點擊了。
private void Grid_MouseDown_1(object sender, MouseButtonEventArgs e)
{
}
很基本,所有的作品和編譯按預期。
我遇到的問題是我無法在MainWindow.xaml的窗口中加載Page1.xaml。我不想打開一個單獨的窗口,我只想將Page1.xaml上的內容顯示在MainWindow.xaml的可見窗口內。
我用下面,但是當我點擊我的鏈接我得到一個錯誤的嘗試:類型「System.NullReferenceException」未處理的異常發生
private void Grid_MouseDown_1(object sender, MouseButtonEventArgs e)
{
Uri uri = new Uri("Page1.xaml", UriKind.Relative);
NavigationService ns = NavigationService.GetNavigationService(this);
ns.Navigate(uri);
}
這不是一個瀏覽器應用程序,它只是一個桌面應用。第一個屏幕(MainWindow.xaml)應該點擊直到顯示第二個屏幕(Page1.xaml)。
我想讓Page1.xaml內容佔據MainWindow.xaml的整個窗口(對不起,但我不能強調這一點,我不想從MainWindow.xaml中獲取框架或任何內容,用戶在Page1.xaml上)。
我很新的桌面應用程序,但我有廣泛的知識.NET Web應用程序的C#。如果有更好的方法來實現這一點,我並不反對改變我所擁有的流程。例如,也許我不應該使用Window to Page導航,而應該使用Window to Window或別的東西。
我會想象這將是一個相對簡單的任務,但我還沒有找到任何工作,所以希望這裏有人能解釋它。
我不記得GetNavigationService()需要任何參數 – fillobotto
如果我從GetNavigationService()中刪除「this」,那麼代碼不會編譯。 –
@FilippoB https://msdn.microsoft.com/en-us/library/system.windows.navigation.navigationservice.getnavigationservice(v=vs.110).aspx將「DependencyObject」作爲參數。 – CodingGorilla