2011-05-12 86 views
1

我正在使用Silverlight導航框架,其中有一個框架,其中我有一個UriMapper。由於我可以爲我的一個頁面創建多個參數,因此我希望有一種通配符或可變參數映射來避免創建所有參數組合。Silverlight - 有沒有辦法讓'variadic'UriMapping?

這裏是什麼樣子,只有三個參數,並且一些組合省略:

<sdk:Frame> 
    <sdk:Frame.UriMapper> 
     <sdk:UriMapper x:Name="uriMapper"> 
      <sdk:UriMapping Uri="List/query={query}/sort={sort}" MappedUri="/Views/ListPage.xaml?query={query}&amp;sort={sort}" /> 
      <sdk:UriMapping Uri="List/filter={filter}/sort={sort}" MappedUri="/Views/ListPage.xaml?filter={filter}&amp;sort={sort}" /> 
      <sdk:UriMapping Uri="List/filter={filter}/query={query}/sort={sort}" MappedUri="/Views/ListPage.xaml?filter={filter}&amp;query={query}&amp;sort={sort}" /> 
      <sdk:UriMapping Uri="List/sort={sort}" MappedUri="/Views/ListPage.xaml?sort={sort}" /> 
      <sdk:UriMapping Uri="{}{Page}" MappedUri="/Views/{Page}Page.xaml" /> 
     </sdk:UriMapper> 
    </sdk:Frame.UriMapper> 
</sdk:Frame> 

我想辦法寫的所有可能的參數到「列表」頁面有一行,因爲他們都遵循相同的規則。像(這不起作用):

<sdk:UriMapping Uri="List/{params}" MappedUri="/Views/ListPage.xaml?{params}" /> 

那麼,有沒有辦法在Silverlight中做到這一點?

編輯:如果一切都失敗了,我可能會後備代碼生成映射,看起來會比幾十條XAML線條更難看。

編輯2:或者只是忘記映射的URIs,只是傳遞實際的頁面名稱Navigate()。

回答

2

這就是Silverlight導航框架平坦的地方,也是我在生產應用中不使用它的一個重要原因。也就是說,在Silverlight 4中,您可以使用INavigationContentLoader以編程方式將所有不同的參數映射到其正確的視圖,並創建更強大的自己的映射器類。另外請注意,這在Windows Phone 7中目前不可用(我看你做了很多iOS開發,所以想指出)。如果我沒有記錯的話,它應該在Windows Phone的Mango更新中提供,它應該在下個月對開發者和今年年底的消費者可用。

查閱這些鏈接,瞭解更多信息:

http://blogs.msdn.com/b/dphill/archive/tags/helix/

http://www.davidpoll.com/2009/11/30/opening-up-silverlight-4-navigation-introduction-to-inavigationcontentloader/

+0

謝謝,我會檢查了這一點! – jv42 2011-05-16 08:40:15