Silverlight - есть ли способ иметь «вариадное» UriMapping? - PullRequest
1 голос
/ 12 мая 2011

Я использую фреймворк Silverlight Navigation с одним кадром, в котором у меня есть 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>

Я бы хотел записать все возможные параметры на странице «Список» одной строкой, поскольку все они следуют одному и тому же правилу.Что-то вроде (что не работает):

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

Итак, есть ли способ сделать это в Silverlight?

РЕДАКТИРОВАТЬ: Если все остальное не удается, я мог бы вернуться к созданиюотображение в коде, которое выглядело бы менее уродливо, чем десятки строк XAML.

EDIT2: Или просто забудьте о отображении URI и просто передайте реальное имя страницы в Navigate ().

1 Ответ

2 голосов
/ 16 мая 2011

Именно здесь навигационная платформа Silverlight выглядит непривлекательно, и это одна из главных причин, по которой я не использую ее в производственных приложениях. Тем не менее, в Silverlight 4 вы можете использовать INavigationContentLoader, чтобы программно отобразить все различные параметры в их правильное представление и создать свой собственный класс mapper, который является более надежным.

Также обратите внимание, что это не доступно в Windows Phone 7 в настоящее время (я вижу, что вы много делаете для iOS, поэтому хотел указать на это). Если я правильно помню, оно должно быть доступно в обновлении Mango для 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/

...