System.InvalidOperationException:找不到该位置的XAML

时间:2011-06-23 04:48:23

标签: windows-phone-7 mvvm-light

我有一个使用galasoft mvvm light工具包的wp7应用程序。奇怪的是,即使我的代码正在创建正确的导航网址,网址在导航时也会出现格式错误

正在生成的uri是异常的

  

{“在位置找不到XAML'/Views/EditItemGroupid=3.xaml'。”}

任何想法为什么网址会像那样。只是打破了我的头脑。

由于

在xaml方面..

<ListBox x:Name="ItemGroupsList" 
         ItemsSource="{Binding ItemGroups}" 
         Height="496" 
         SelectedItem="{Binding SelectedItemGroup, Mode=TwoWay}">
    <Custom:Interaction.Triggers>
        <Custom:EventTrigger EventName="SelectionChanged">
            <GalaSoft_MvvmLight_Command:EventToCommand 
                x:Name="SelectionChangedEvent" 
                Command="{Binding GoToEditItemGroupCommand, Mode=OneWay}" 
                PassEventArgsToCommand="True"/>
        </Custom:EventTrigger>
    </Custom:Interaction.Triggers>

我的视图模型上的代码

GoToEditItemGroupCommand = new RelayCommand(() => this.GoToPage(
    "EditItemGroup",
    string.Format("id={0}", SelectedItemGroup != null
        ? SelectedItemGroup.ItemGroupId : 0)
));

protected object GoToPage(string pageName, string queryString)
{
    var msg = new GoToPageMessage()
    {
        PageName = pageName, 
        QueryString =  queryString
    };
    Messenger.Default.Send<GoToPageMessage>(msg); 
    return null;
}

我的视图代码在构造函数后面的代码   Messenger.Default.Register(this,(action)=&gt; this.ReceiveMessage(action));

receivemessage方法中的代码

private object ReceiveMessage(GoToPageMessage action)
{
    StringBuilder sb = new StringBuilder("/Views/");
    sb.Append(action.PageName);
    sb.Append(".xaml");

    if (!string.IsNullOrEmpty(action.QueryString))
    {
        sb.Append("?");
        sb.Append(action.QueryString);
    }

    NavigationService.Navigate(new Uri(sb.ToString(), UriKind.Relative));

    return null;
} 

GoToPageMes​​sage定义为

public class GoToPageMessage
{
    public string PageName { get; set; }

    public string QueryString { get; set; }
}

更多例外细节......对不起,这可能会变得丑陋

  • AbsolutePath'e.Uri.AbsolutePath'引发了类型'System.InvalidOperationException'字符串{System.InvalidOperationException}
  • 的异常
  • base {“相对URI不支持此操作。”} System.SystemException {System.InvalidOperationException}
  • AbsoluteUri'e.Uri.AbsoluteUri'抛出了类型'System.InvalidOperationException'字符串的异常{System.InvalidOperationException}
  • 权限'e.Uri.Authority'引发了类型'System.InvalidOperationException'字符串的异常{System.InvalidOperationException}
  • DnsSafeHost'e.Uri.DnsSafeHost'引发了类型'System.InvalidOperationException'字符串的异常{System.InvalidOperationException}
  • Fragment'e.Uri.Fragment'引发了类型'System.InvalidOperationException'字符串{System.InvalidOperationException}的异常     HasAuthority false bool
  • 主持人'e.Uri.Host'抛出了类型'System.InvalidOperationException'字符串的异常{System.InvalidOperationException}
  • HostNameType'e.Uri.HostNameType'引发了类型'System.InvalidOperationException'的异常System.UriHostNameType {System.InvalidOperationException}     HostType HostNotParsed System.Uri.Flags     IsAbsoluteUri false bool
  • IsDefaultPort'e.Uri.IsDefaultPort'引发了类型'System.InvalidOperationException'的异常bool {System.InvalidOperationException}     IsDosPath假bool     IsFile无法评估表达式bool     IsImplicitFile false bool
  • IsLoopback'e.Uri.IsLoopback'抛出类型'System.InvalidOperationException'的异常bool {System.InvalidOperationException}     IsNotAbsoluteUri是真的bool
  • IsUnc'e.Uri.IsUnc'抛出了'System.InvalidOperationException'类型的异常'bool {System.InvalidOperationException}     IsUncOrDosPath false bool     IsUncPath false bool
  • LocalPath'e.Uri.LocalPath'引发了类型'System.InvalidOperationException'字符串{System.InvalidOperationException}的异常     m_Flags HostNotParsed System.Uri.Flags     m_Info null System.Uri.UriInfo     m_OrigFileString null string     m_String“/Views/EditItemGroupid=3.xaml”string
  • m_Syntax null System.UriParser     OriginalString“/Views/EditItemGroupid=3.xaml”string
  • PathAndQuery'e.Uri.PathAndQuery'引发了类型'System.InvalidOperationException'字符串{System.InvalidOperationException}
  • 的异常
  • Port'e.Uri.Port'抛出了类型'System.InvalidOperationException'int {System.InvalidOperationException}
  • 的异常
  • PrivateAbsolutePath'e.Uri.PrivateAbsolutePath'引发了类型'System.NullReferenceException'字符串{System.NullReferenceException}
  • 的异常
  • 查询'e.Uri.Query'引发了类型'System.InvalidOperationException'字符串{System.InvalidOperationException}
  • 的异常
  • Scheme'e.Uri.Scheme'抛出了类型'System.InvalidOperationException'字符串{System.InvalidOperationException}的异常     SecuredPathIndex 0 ushort     细分无法评估表达式字符串[]     语法无法计算表达式System.UriParser     UserDrivenParsing false bool     UserEscaped false bool
  • UserInfo'e.Uri.UserInfo'引发了类型'System.InvalidOperationException'字符串{System.InvalidOperationException}
  • 的异常

2 个答案:

答案 0 :(得分:2)

将WP7应用程序升级到WP8(VS 2013 RC)后,我在尝试在模拟器中运行应用程序时遇到了这个非常恼人的错误。 no xaml was found at the location ‘/mainpage.xaml&#39;

我发现了一行修复;在AssemblyInfo.cs文件中,您必须更改以下行:

[assembly: NeutralResourcesLanguage("en", UltimateResourceFallbackLocation.Satellite)]

[assembly: NeutralResourcesLanguage("en")]

一线修复!可惜错误信息根本没用。

答案 1 :(得分:0)

根据Navigate方法中的重写判断,我假设您使用可能导致问题的URL映射器。要使其工作,请调整URI映射或删除Mapper。

有关WP 7 URI映射的更多信息,请参阅here