我有一個使用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;
}
的GoToPageMessage被定義爲
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
如果你想讓人們付出努力回答你的問題,請花更多的精力來格式化你的代碼。 –
什麼行導致異常被拋出?在構建Uri之前,您是否已經追溯了您的StringBuilder的價值? –
是由'new Uri(sb.ToString(),UriKind.Relative)'還是'NavigationService.Navigate'造成的錯誤? Whar是你傳給'new Uri的'sb.ToString()'的內容?你有沒有重新編譯(不只是編譯)? – AxelEckenberger