我正在使用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}&sort={sort}" />
<sdk:UriMapping Uri="List/filter={filter}/sort={sort}" MappedUri="/Views/ListPage.xaml?filter={filter}&sort={sort}" />
<sdk:UriMapping Uri="List/filter={filter}/query={query}/sort={sort}" MappedUri="/Views/ListPage.xaml?filter={filter}&query={query}&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中做到这一点?
编辑:如果其他一切都失败了,我可能会回避在代码中生成映射,这看起来不像几十条XAML行那么难看。
EDIT2:或者忘记映射URI并将实际页面名称传递给Navigate()。
答案 0 :(得分:2)
这就是Silverlight导航框架面无表情的地方,也是我不在生产应用程序中使用它的一个重要原因。话虽这么说,在Silverlight 4中,您可以使用INavigationContentLoader
以编程方式将所有不同的参数映射到正确的视图,并创建自己更强大的映射器类。
另请注意,目前在Windows Phone 7中不可用(我看到你做了很多iOS开发,所以想指出这一点)。如果我没记错的话,它应该可以在Windows Phone的芒果更新中找到,该更新应该在下个月左右为开发人员提供,并在今年年底为消费者提供。
查看以下链接以获取更多信息: