WPF - 导航到窗口中包含的框架内的不同页面?

标签 wpf navigation window frame

我有一个包含框架的主窗口。目的是在框架内显示不同的 View (页面)。

<Window>
  <Frame Source="Page1.xaml" />
</Window>

Page1.xaml 的类型为Page,并包含一个按钮,例如Button1。单击 Button1 时,我想导航到 Page2.xaml。但是,以下内容会在运行时破坏应用程序:

private void OnButton1Click(object sender, SelectionChangedEventArgs e)
{
   NavigationService.Content = null; //I tried this thinking exception is caused because Page1.xaml is already present in frame. But no luck! :(
   NavigationService.Navigate(new Uri("Page2.xaml", UriKind.Relative));
}

它抛出XamlParseException“设置属性“System.Windows.FrameworkElement.Style”抛出异常。”内部异常读取指定的元素已经是另一个元素的逻辑子元素。首先断开连接。

我怀疑这也与样式资源有关,因为如果我在 Page2.xaml 中保留空白网格,导航就可以正常工作。 :-|

编辑:开始将带有样式的元素一一添加到 Page2.xaml 中,并意识到只有当我添加设置嵌入图像的样式资源(图像来自来自单独的 dll、 Assets )作为按钮内容。有问题的样式在单独的 Style.xaml 文件(资源字典)中定义如下:

<Style x:Key="BackButton" TargetType="Button">
   <Setter Property="Content">
      <Setter.Value>
         <Image Source="/Assets;component/Images/back.png" />
      <Setter.Value>
   </Setter>
</Style>

如果我评论 Content 属性的 Setter,导航就可以正常工作。因此,作为一个快速解决方案,我将图像添加回 Page2.xaml 上作为按钮的直接内容。

最佳答案

这是来自工作代码
但它不使用NavigationService
它直接更新框架

PageDocFieldDetail pageDocFieldDetail = new PageDocFieldDetail();
framePageDocFieldDetail.Content = pageDocFieldDetail;

关于WPF - 导航到窗口中包含的框架内的不同页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20189888/

相关文章:

wpf - 如何通过物理滚动滚动到列表框中的下一个逻辑页面

audio - iOS 5 : simple audio controls with AVAudioPlayer?

javascript - 跨浏览器填充导航菜单

cocoa - 正确推送 NSView

C# geckoFX(AutoJSContext 不工作)

c# - 如何使用数据绑定(bind)在 Canvas 上绘制数据点集合?

c# - 根据值更改 DataGrid 单元格颜色

c# - 从资源加载图像并应用于 Image.source

jquery - iDangerous Swiper - 隐藏第一张和最后一张幻灯片中的导航箭头

jquery - 在网站(可能是 iframe)中加载网站?