У меня есть следующий 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);
Когда я нажимаю кнопку b, браузер отображает пустую страницу и в конечном итоге предоставляет мне ДЕЙСТВИТЕЛЬНО длинную трассировку стека (исключение InvalidOperation). Если я возьму параметры из указанной строки:
string url = "/FMChart";
... работает как положено (открывает нужную страницу).
Я также пробовал следующие строки:
/ FMChart / {0} & {1}
/ FMChart / {0} & {1}
Что я делаю не так?