我有以下xaml(为了简洁起见,删除了不必要的标记):
<navigation:Frame x:Name="ContentFrame" >
<navigation:Frame.UriMapper>
<uriMapper:UriMapper>
<uriMapper:UriMapping Uri="/{pageName}"
MappedUri="/Views/{pageName}.xaml"/>
<uriMapper:UriMapping Uri="/FMChart/{metricID}/{orgID}"
MappedUri="/Views/FMChart.xaml?metricID={metricID}&orgID={orgID}"/>
</navigation:Frame.UriMapper>
</navigation:Frame.UriMapper>
</navigation:Frame>
我正在动态创建HyperLinkButton对象(在代码中),如下所示:
int metricID = 1;
int orgID = 1;
HyperlinkButton button = new HyperlinkButton();
button.Name = Guid.NewGuid().ToString();
button.TargetName = "ContentFrame";
// this string doesn't work
string url = string.Format("/FMChart/{0}/{1}", metricID, orgID);
button.NavigateUri = new Uri(url, UriKind.Relative);
当我点击bbutton时,浏览器会呈现一个空白页面,最终会向我显示一个非常长的堆栈跟踪(InvalidOperation异常)。如果我从指定的行中取出参数:
string url = "/FMChart";
...它按预期工作(调出所需的页面)。
我也尝试过以下字符串:
/ FMChart / {0}&安培; {1}
/ FMChart / {0}&安培;安培; {1}
我做错了什么?
答案 0 :(得分:1)
此UriMapping
不正确: -
<uriMapper:UriMapping Uri="/FMChart/{metricID}/{orgID}"
MappedUri="/Views/FMChart.xaml?metricID={metricID}&orgID={orgID}"/>
应该是: -
<uriMapper:UriMapping Uri="/FMChart/{metricID}/{orgID}"
MappedUri="/Views/FMChart.xaml?metricID={metricID}&orgID={orgID}"/>
Xaml是xml,因此需要将&
字符编码为&
实体。
答案 1 :(得分:0)
来自CodeProject的实际答案是他在BOTTOM处有映射,并且映射的顺序很重要。
只为那些正在寻找的人。