Silverlight - 有没有办法让'variadic'UriMapping?

时间:2011-05-12 12:52:19

标签: silverlight navigation uri

我正在使用Silverlight导航框架,其中有一个框架,其中我有一个UriMapper。因为我可以为我的一个页面设置几个参数,所以我希望有一种通配符或可变参数映射,以避免创建所有参数组合。

以下是仅有三个参数的情况,省略了一些组合:

<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>

我想用一种方法将所有可能的参数写入带有单行的'List'页面,因为它们都遵循相同的规则。像(不起作用)的东西:

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

那么,有没有办法在Silverlight中做到这一点?

编辑:如果其他一切都失败了,我可能会回避在代码中生成映射,这看起来不像几十条X​​AML行那么难看。

EDIT2:或者忘记映射URI并将实际页面名称传递给Navigate()。

1 个答案:

答案 0 :(得分:2)

这就是Silverlight导航框架面无表情的地方,也是我不在生产应用程序中使用它的一个重要原因。话虽这么说,在Silverlight 4中,您可以使用INavigationContentLoader以编程方式将所有不同的参数映射到正确的视图,并创建自己更强大的映射器类。

另请注意,目前在Windows Phone 7中不可用(我看到你做了很多iOS开发,所以想指出这一点)。如果我没记错的话,它应该可以在Windows Phone的芒果更新中找到,该更新应该在下个月左右为开发人员提供,并在今年年底为消费者提供。

查看以下链接以获取更多信息:

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

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