Silverlight导航框架 - 正则表达式像uri映射配置问题

时间:2011-09-18 12:42:59

标签: .net silverlight silverlight-4.0 navigation

我知道我的应用程序的URI结构,所以如果它以let #Home结尾,它将导航到主框架。但是,如果它以#{\d\d\d}(此处为3位数的正则表达式)结尾,则会导航到#Home并将这3位数作为参数传递。

我认为导航框架不支持大括号中{parameters}的正则表达式,并且它通常在URI映射中需要#Home/{id}。如果我只是做#{id}映射#Home,甚至#AnotherPage也会陷入其中。

如果我想坚持我的URI计划,我怎么能实现这个,最简单的方法?

1 个答案:

答案 0 :(得分:0)

也许您可以实现自定义urimapper来实现这一目标。以此为例:Case sensitive UriMapper issue in 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
   }