我在MainWindow
中有一个框架。我有一个名为MainPage
的网页,我正试图将其导航到another page
。
这是我的Xaml:
<Window x:Class="Lab_Lite.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" WindowState="Maximized">
<DockPanel LastChildFill="True">
<Frame x:Name="Navigator" Source="/Lab_Lite;component/Pages/MainPage.xaml" />
</DockPanel>
</Window>
这是我的MainPage.cs文件:
public partial class MainPage : Page
{
public MainPage()
{
InitializeComponent();
}
private void Tile_Click(object sender, RoutedEventArgs e)
{
using (Lab_Lite_Entities db = new Lab_Lite_Entities())
{
MainWindow test = new MainWindow();
string pageName = (from t in db.TypePages
select t)
.Where(t => t.Value.Replace("***", Environment.NewLine) == ((Button)sender).Content)
.Select(t => t.AssociatedPage)
.FirstOrDefault();
test.Navigator.Navigate(new Uri("Pages/" + pageName + ".xaml", UriKind.RelativeOrAbsolute));
}
}
}
当我调试代码时,我发现pagename
具有我正在寻找的完美价值。但我无法导航。我没有收到任何错误。
答案 0 :(得分:1)
我没有使用过框架导航,但似乎创建一个新的MainWindow并调用Navigate是不对的。您应该在实际存在的MainWindow上调用Navigate。
答案 1 :(得分:1)
您正在创建MainWindow
的新视图,它不在视图中。
使用existing instance of MainWindow
,您可以通过两种方法获得 -
如果MainWindow是startup window
:
MainWindow test = (MainWindow)App.Current.MainWindow;
此外,您也可以使用这种通用方法 -
MainWindow test = (MainWindow)Window.GetWindow(this);