2011-06-23 63 views
2

我有一個使用galasoft mvvm light工具包的wp7應用程序。這是奇怪的URL是在導航的時候,即使我的代碼是創建正確的網址導航System.InvalidOperationException:在位置找不到XAML

正在生成的URI是這樣的,從異常

{」越來越畸形在位置'/Views/EditItemGroupid=3.xaml'找不到XAML。「}

任何想法爲什麼url會是這樣的。只是把我的頭埋在這裏。

感謝

在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在背後說我查看代碼的代碼。註冊(this,(action)=> 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.InvalidOperationE xception}
  • 基{ 「該操作不支持相對URI。」} {System.SystemException} System.InvalidOperationException
  • 絕對URI 'e.Uri.AbsoluteUri' 投擲類型的異常 'System.InvalidOperationException' 字符串{System.InvalidOperationException}
  • 管理局 'e.Uri.Authority' 投擲類型的異常 'System.InvalidOperationException' 字符串{System.InvalidOperationException}
  • DnsSafeHost 'e.Uri.DnsSafeHost' 投擲類型的異常「系統.InvalidOperationException'string {System.InvalidOperationException}
  • 片段'e.Uri.Fragment'拋出一個異常'System.InvalidOperationException' 類型串{System.InvalidOperationException} HasAuthority假布爾
  • 主機 'e.Uri.Host' 扔 'System.InvalidOperationException' 類型串{System.InvalidOperationException}
  • HostNameType「E的異常。 Uri.HostNameType」投擲類型的異常 'System.InvalidOperationException' System.UriHostNameType {System.InvalidOperationException} HOSTTYPE HostNotParsed System.Uri.Flags IsAbsoluteUri假布爾
  • IsDefaultPort 'e.Uri.IsDefaultPort' 投擲類型的異常'System.InvalidOperationException'bool {System。出現InvalidOperationException} IsDosPath假布爾 ISFILE無法計算表達式布爾 IsImplicitFile假布爾
  • IsLoopback 'e.Uri.IsLoopback' 扔類型的異常 'System.InvalidOperationException' 布爾{} System.InvalidOperationException IsNotAbsoluteUri真布爾
  • IsUnc「e.Uri.IsUnc」投擲類型的異常「System.InvalidOperationException」布爾{System.InvalidOperationException} IsUncOrDosPath假布爾 IsUncPath假布爾
  • 局部路徑「e.Uri.LocalPath」投擲類型的異常' System.InvalidOperationException'string {System.I nvalidOperationException} m_Flags HostNotParsed System.Uri.Flags m_Info空System.Uri.UriInfo m_OrigFileString空字符串 m_String 「/Views/EditItemGroupid=3.xaml」 串
  • m_Syntax空System.UriParser OriginalString「/查看/ EditItemGroupid = 3.xaml」串
  • PathAndQuery 'e.Uri.PathAndQuery' 投擲類型的異常 'System.InvalidOperationException' 字符串{System.InvalidOperationException}
  • 端口 'e.Uri.Port' 投擲類型的異常' System.InvalidOperationException'int {System.InvalidOperationException}
  • PrivateAbsolutePath'e.Uri.PrivateAbsolutePath'拋出'System.NullReferenceException'類型的異常字符串{System.NullReferenceException}
  • 查詢'e.Uri.Query'拋出了'System.InvalidOperationException'字符串{System。出現InvalidOperationException}
  • 方案「e.Uri.Scheme」投擲類型的異常「System.InvalidOperationException」字符串{System.InvalidOperationException} SecuredPathIndex 0 USHORT 區隔無法評估表達式字符串[] 語法無法評估表達系統。 UriParser UserDrivenParsing false bool UserEscaped false bool
  • 的UserInfo「e.Uri.UserInfo」扔類型的異常「System.InvalidOperationException」字符串{} System.InvalidOperationException
+0

如果你想讓人們付出努力回答你的問題,請花更多的精力來格式化你的代碼。 –

+0

什麼行導致異常被拋出?在構建Uri之前,您是否已經追溯了您的StringBuilder的價值? –

+0

是由'new Uri(sb.ToString(),UriKind.Relative)'還是'NavigationService.Navigate'造成的錯誤? Whar是你傳給'new Uri的'sb.ToString()'的內容?你有沒有重新編譯(不只是編譯)? – AxelEckenberger

回答

0

由在Navigate方法內進行重寫來看,我會假設你使用可能導致問題的URL映射器。爲了使它工作調整你的URI映射或刪除映射器。

有關WP 7 URI映射的更多信息,請參閱here

+0

如何調整uri映射或移除映射器 – siva

+0

@siva:請參閱編輯以獲取有關WP中的URI映射的更多信息7。 – AxelEckenberger

2

將WP7應用程序升級到WP8(VS 2013 RC)後,當嘗試在模擬器中運行應用程序時,出現了非常惱人的錯誤。 no xaml was found at the location ‘/mainpage.xaml'。

我發現了一行修復;在AssemblyInfo.cs文件,你必須改變行:

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

[assembly: NeutralResourcesLanguage("en")] 

一號線修復!可惜錯誤信息根本沒有幫助。