我有一个使用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;
}
GoToPageMessage定义为
public class GoToPageMessage
{
public string PageName { get; set; }
public string QueryString { get; set; }
}
更多例外细节......对不起,这可能会变得丑陋
答案 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。