【问题标题】:Uri throws invalid port for WPF style uriUri 为 WPF 样式 uri 抛出无效端口
【发布时间】:2016-08-03 15:30:43
【问题描述】:

我正在尝试使用 wpf 样式的 uri 在代码中初始化 BitmapImage 实例。

BitmapImage icon = new BitmapImage(new Uri("pack://application:,,,/MyAssembly;component/Icons/someIcon.ico", UriKind.Absolute));

但问题是new Uri 抛出System.UriFormatException

无效的 URI:指定的端口无效。

我做错了什么?

【问题讨论】:

  • 您是否真的在运行 WPF 应用程序时这样做?如果 'pack' 方案未注册,您将收到此消息,并且在创建 System.Windows.Application 后立即注册。
  • @CharlesMager 在 Winform 托管的 WPF 应用程序上运行。猜猜这就是为什么
  • 尝试在您的Program.Main 方法中添加new System.Windows.Application();(您在其中初始化WinForms 应用程序)。
  • @CharlesMager 就像一个魅力。输入一个答案,我会很乐意接受它

标签: c# wpf uri


【解决方案1】:

这里的问题是您试图在不是普通 WPF 应用程序的应用程序中创建 UriUri 有许多在UriParser 注册的内置“方案”。

UriParser 类使您能够为新的 URI 方案创建解析器。您可以完整编写这些解析器,也可以从众所周知的方案(HTTP、FTP 和其他基于网络协议的方案)派生出解析器。

WPF 在创建System.Windows.Application 时为“pack”方案添加了一个解析器,这是 WPF 应用程序的正常入口点。在你的情况下,你可以在你的作文根目录中添加一个调用:

new System.Windows.Application();

【讨论】:

    【解决方案2】:

    我们可以使用下面的代码

    UriParser.Register(new GenericUriParser(GenericUriParserOptions.GenericAuthority), "pack", -1);
    

    在尝试创建 uri 之前。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多