Silverlight NavigationService 始终为空

2024-01-09

我读到有些人遇到了这个问题,所以我想发布一个我在尝试处理这个问题时想到的(有点)优雅的解决方案。问题是当您在 Silverlight 中创建模板化页面时,ContentControls 没有父 Frame 的 NavigationService(当您尝试使用它时它始终为 null)。也有类似的场景,其中 NavigationService 存在于智能中,但始终为空。要启用站点范围的导航:

  1. 创建一个新的UserControl(我将我的称为“NavFrame”),其中有一个导航框架(我将我的称为“RootFrame”)。

  2. 在此框架内您可以设置任何您喜欢的内容。

  3. 将此 UserControl 设置为您的RootVisual在 App.xaml.cs 中(即this.RootVisual = new NavFrame();).

  4. 要在任何页面中使用 NavigationService,您可以键入以下内容:

    ((NavFrame)App.Current.RootVisual).RootFrame.NavigationService
        .Navigate(new Uri("Your Uri", UriKind.RelativeOrAbsolute));
    

您可以创建一个操作并将其拖动到要进行导航的控件顶部,就像这样:

public class NavigateAction : TriggerAction<DependencyObject>
{
    public Uri Uri
    {
        get;
        set;
    }

    protected override void Invoke(object parameter)
    {
        var frame = FindContainingFrame(AssociatedObject);

        if(frame == null)
            throw new InvalidOperationException("Could not find the containing Frame in the visual tree.");

        frame.Navigate(Uri);
    }

    protected static Frame FindContainingFrame(DependencyObject associatedObject)
    {
        var current = associatedObject;

        while(!(current is Frame))
        {
            current = VisualTreeHelper.GetParent(current);

            if(current == null)
                return null;
        }

        return (Frame)current;
    }
}

现在您只需将其拖动并将其连接到目标页面即可。顺便说一句,SL4 是这样,从未在 SL3 上尝试过。并且 URI 确实以以下形式工作:“/SilverlightApplication1;组件/Page1.xaml" 或使用框架上的 UriMapping。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Silverlight NavigationService 始终为空 的相关文章

随机推荐

  • docker jboss7 战争提交。服务器启动失败且无法恢复

    有没有办法将 war 文件部署到在 docker 容器内运行的 Jboss as7 中 因为我的 jboss 服务器在 docker 提交后似乎失败了 Could not rename usr local share jboss stand
  • Keycloak + Kerberos 身份验证:机制级别:无效参数 (400) - 无法找到适当类型的密钥来解密 AP REP - 使用 HMAC 的 RC4

    我有以下内容 JBoss EAP 7 2 2 上的 Spring Web 应用程序 Machine CentOs CentO 上的 Keycloak 3 3 4 活动目录 我们在 OpenJDK 8 上运行 用户使用其 Active Dir
  • CG 3.0会泄露吗?

    我发现 CG 似乎存在内存泄漏 我通过 nvidia com 提交了一份报告 但如果您尝试这样做here http will sherif appspot com html d3d11 DirectWrite html 如果你删除那行 cg
  • 语法错误:编译 ejs 时参数列表后缺少 )

    编译 ejs 时 我收到错误 参数列表后缺少 我尝试了很多次 但找不到问题所在 这是导致错误的 ejs 这段代码有什么问题 h2 class page title Products h2 br a href admin products a
  • WPF Ribbon - 隐藏快速访问工具栏

    如何在 WPF 功能区中隐藏快速访问工具栏 For 您可以使用隐藏它VisualTreeHelper 上Loaded事件处理程序 只需将包含快速访问工具栏的行大小调整为 0 private void RibbonLoaded object
  • 安卓L | libusb_init 返回 LIBUSB_ERROR_OTHER (-99)

    我尝试使用libusb在未 root 的 Nexus 5 上 如建议的那样这种方法 https stackoverflow com a 24243605 902217 通过将 USB 文件描述符从 java 传输到本机端 我的应用程序通过以
  • 将空图添加到ggplot2中的facet_wrap

    我正在尝试创建 3 个图 其中所有面板应具有相同的大小 所以我认为解决方案可能是facet wrap 我的问题是 我不希望每个图表中有相同数量的图表 df lt data frame group c 1 1 2 2 2 3 3 name c
  • 在树枝模板中设置多维数组中单个对象的值

    对于项目需要 我需要在渲染之前更改一些表单字段数据 为此 我迭代表单元素并动态更改我需要的值 问题是我无法改变价值 我收到这个错误 Unexpected token punctuation of value end of statement
  • Emacs 搜索和替换的好教程 + 参考吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 对于 Emacs 的新用户来说 有什么好的教程 参考来学习和熟悉 Emacs 的搜索 替换和正则表达式功能吗 In Emacs press
  • 动态生成的 Perl Moose 访问器

    请参阅以下基于 Moose 的 Perl 代码片段 BusinessClass gt meta gt add attribute Key gt is gt rorw isa gt MooseType lazy gt 0 required g
  • C语言中如何连接两个整数

    Stack Overflow 用许多其他语言回答了这个问题 但没有用 C 语言回答 所以我想我会问 因为我有同样的问题 C语言中如何连接两个整数 Example x 11 y 11 我想要 z 如下 z 1111 其他示例尝试使用字符串来执
  • N层架构中如何维护事务

    我正在 N 层架构中开发应用程序 众所周知 我们需要在插入 更新 删除操作时实现事务 请告诉我如何在 N 层架构的 c net 中使用事务 我的架构是这样的 Applicationform gt middle Layre gt Factor
  • simple_form 带有自定义包装器的自定义输入

    我正在尝试在我的应用程序中为货币进行自定义输入 我有那些 bootstrap 包装器等 我认为它带有 simple form 或 bootstrap gem 所以 我可以做类似的事情 它的工作原理正如预期的那样 问题是 我在很多地方都需要同
  • 登录框架

    想象一下有一个框架提供了一个名为logutils set up 它根据某些配置设置日志记录 应尽早设置日志记录 因为导入库期间发出的警告不应丢失 由于旧方法 if name main 看起来很难看 我们使用控制台脚本入口点来注册main m
  • 添加一些内容后的 VB.Net 双重比较

    在向双变量添加一些值后 我遇到了一个奇怪的情况 当将 0 2 多次添加到双精度变量时会出现问题 我认为这只发生在 0 2 例如 考虑以下代码 Dim i As Double 2 i i 0 2 MsgBox i 2 2 MsgBox i g
  • VS2010添加新文件抛出设置属性'System.Windows.ResourceDictionary.DeferrableContent'抛出异常

    在 Visual Studio 2010 中 当我右键单击一个项目并选择 添加新项目 时 光标闪烁一秒钟 但没有任何反应 如果我去文件 gt 新建 gt 文件 我得到 设置属性 System Windows ResourceDictiona
  • IgnoreReadOnlyRecommended 打开 Excel 工作簿时无法从 Python 运行

    我有一个 Excel 工作簿 需要以可写模式从 python 打开 工作簿设置为提示只读推荐 https support office com en us article Prompt to open a Microsoft Office
  • 条码扫描仪读取代码速度太慢

    我使用 codenameone codescanner 库来读取条形码 它使用第三方扫描仪 如果单独使用 则可以正常工作并且可以快速读取条形码 但是使用codenameone应用程序 同样的扫描仪速度太慢 大多数时候无法扫描 我已经在三星设
  • 使用 iTextSharp 在 PdfPCell 中自动调整图像大小

    我在 iTextSharp 库中的图像遇到一个奇怪的问题 我将图像添加到 PdfPCell 中 由于某种原因它被放大了 我怎样才能保持原来的大小 我虽然打印时图像是相同的 但图片上的差异在打印版本上是相同的 必须使用 ScaleXXX 手动
  • Silverlight NavigationService 始终为空

    我读到有些人遇到了这个问题 所以我想发布一个我在尝试处理这个问题时想到的 有点 优雅的解决方案 问题是当您在 Silverlight 中创建模板化页面时 ContentControls 没有父 Frame 的 NavigationServi