作为项目引用调用时,WPF框架Uri不起作用

作为项目引用调用时,WPF框架Uri不起作用,wpf,url,uri,frame,relative-path,Wpf,Url,Uri,Frame,Relative Path,我在VS2010的WPF项目中有一个简单的框架。Uri在codebehind中通过以下方式调用: Dim U As New Uri("Pages/PageTranslate.xaml", UriKind.Relative) 现在我在另一个项目中使用此项目作为参考。我使用如下实例调用FrameProject New FrameProjectInstance1 现在我收到一个错误: System.IO.IOException未处理 Message=找不到资源“pages/pagetranslat

我在VS2010的WPF项目中有一个简单的框架。Uri在codebehind中通过以下方式调用:

Dim U As New Uri("Pages/PageTranslate.xaml", UriKind.Relative)
现在我在另一个项目中使用此项目作为参考。我使用如下实例调用FrameProject

New FrameProjectInstance1
现在我收到一个错误:

System.IO.IOException未处理 Message=找不到资源“pages/pagetranslate.xaml”。 Source=PresentationFramework 堆栈跟踪: 位于MS.Internal.AppModel.ResourcePart.GetStreamCore(文件模式,文件访问) 在System.IO.Packaging.PackagePart.GetStream(文件模式,文件访问) 在System.IO.Packaging.PackWebResponse.CachedResponse.GetResponseStream()中 在System.IO.Packaging.PackWebResponse.GetResponseStream()中 在System.IO.Packaging.PackWebResponse.get_ContentType()中

我试过了:运气不好。总是犯同样的错误。还包括:

        U = New Uri("/Pages/PageTranslate.xaml", UriKind.RelativeOrAbsolute)
        U = New Uri("pack://application:,,,Pages/PageTranslate.xaml", UriKind.RelativeOrAbsolute)
        U = New Uri("pack://application:,,,/Pages/PageTranslate.xaml", UriKind.Absolute)

可能您应该使用“MyDll;/Pages/PageTranslate.xaml”?其中,MyDll是框架项目的dll名称。

可能是您应该使用的名称:“MyDll;/Pages/PageTranslate.xaml”?其中MyDll是框架项目的dll名称。

我发现这对我有用。希望它也能帮助其他人:

  'In Application.Xaml
  Public Shared NavigationService As NavigationService 'set when MainWindow.xaml is Loaded 

  Public Shared Function NavigationUri(ByVal Path As String) As Uri
    Dim asm As System.Reflection.Assembly
    asm = System.Reflection.Assembly.GetExecutingAssembly

    Dim U As Uri
    U = New Uri("pack://application:,,,/" & asm.GetName().Name & ";component/" & Path, UriKind.Absolute)
    Return U
End Function
这样称呼:

Application.NavigationService.Source = Application.NavigationUri("Pages/PageAutoTranslation.xaml")

我发现这对我有用。希望它也能帮助其他人:

  'In Application.Xaml
  Public Shared NavigationService As NavigationService 'set when MainWindow.xaml is Loaded 

  Public Shared Function NavigationUri(ByVal Path As String) As Uri
    Dim asm As System.Reflection.Assembly
    asm = System.Reflection.Assembly.GetExecutingAssembly

    Dim U As Uri
    U = New Uri("pack://application:,,,/" & asm.GetName().Name & ";component/" & Path, UriKind.Absolute)
    Return U
End Function
这样称呼:

Application.NavigationService.Source = Application.NavigationUri("Pages/PageAutoTranslation.xaml")

谢谢你。你的想法很好。只是语法和how-to并没有完全按照这种方式工作。我找到了一个解决方案并发布了它。谢谢,谢谢你。你的想法很好。只是语法和how-to并没有完全按照这种方式工作。我找到了一个解决方案并发布了它。谢谢