Рамка навигации Silverlight - регулярное выражение, как проблема конфигурации URI - PullRequest
0 голосов
/ 18 сентября 2011

У меня есть представление о структуре URI для моего приложения, поэтому, если оно оканчивается, скажем, #Home, оно перейдет к основному кадру.Однако, если он заканчивается чем-то вроде #{\d\d\d} (здесь для регулярного выражения 3 цифры), он перейдет к #Home и передаст эти 3 цифры в качестве параметра.

Я не думаю, что инфраструктура навигации поддерживает регулярные выражения для{parameters} в фигурных скобках, и обычно ожидается что-то вроде #Home/{id} в отображении URI.и если я просто сделаю #{id} сопоставление #Home и даже #AnotherPage будет также вовлечено в это.

Если я хочу придерживаться своего плана для URI, как я могу достичь этого, самый простой способ?

1 Ответ

0 голосов
/ 19 сентября 2011

Может быть, вы могли бы реализовать пользовательский Urimapper для достижения этой цели.Проверьте это в качестве примера: Чувствительная к регистру проблема UriMapper в Silverlight 3

.. или

Вы можете попробовать что-то вроде

<uriMapper:UriMapping Uri="/Views/{myVar}Home" MappedUri="/Views/MainFrame.xaml"/>

<uriMapper:UriMapping Uri="/Views/{myVar}" MappedUri="/Views/Home.xaml?myVar={myVar}"/>

затем, в Home.xaml.cs, вы сможете сделать следующее:

  this.Loaded += Home_Loaded;
    ...
   public void Home_Loaded(object sender, RoutedEventArgs e)
   {
     if (this.NavigationContext.QueryString.ContainsKey("myVar"))
     var v = this.NavigationContext.QueryString["myVar"]; 
     //Now examine v.  If it is in the correct format \d\d\d then continue.
     //Else...redirect or throw exception
   } 
...