Ας βάλω κι εδώ την ίδια ερώτηση που έχω βάλει στα silverlight forums (αλλά δεν έχω πάρει απάντηση):
Ξεκινούμε με ένα νέο Silverlight Navigation Application. Στο MainPage.xaml, προσθέτουμε ένα UriMapping κι έτσι το Frame γίνεται ως εξής:
<navigation:Frame x:Name="ContentFrame" Style="{StaticResource ContentFrameStyle}"
Source="/Home" Navigated="ContentFrame_Navigated" NavigationFailed="ContentFrame_NavigationFailed">
<navigation:Frame.UriMapper>
<uriMapper:UriMapper>
<uriMapper:UriMapping Uri="" MappedUri="/Views/Home.xaml"/>
<uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/>
<uriMapper:UriMapping Uri="/{pageName}/{test}" MappedUri="/Views/{pageName}.xaml?test={test}" />
</uriMapper:UriMapper>
</navigation:Frame.UriMapper>
</navigation:Frame>
Τώρα, σύμφωνα με αυτά που λέει στο MSDN, όταν θα δώσουμε http://localhost:10961/SilverlightApplication1TestPage.aspx#/Home/123 θα πρέπει να ανοίξεi η εφαρμογή στο Home.xaml και μέσα στο OnNavigatedTo, το NavigatedContext.QueryString dictionary θα πρέπει να περιέχει το key/value pair "test/123". Ωστόσο, αντί γι αυτό μου ανοίγει ένα error window με το μήνυμα "Conversion from string "Page not found: \" + uri.ToStrin" to type 'Long' is not valid.". Επιπρόσθετα, δεν μπορώ να βρω από που προκύπτει αυτό το παράθυρο γιατί κανένα από τα δύο break points στο ContentFrame's NavigationFailed event handler και το Application UnhadledException event handler δεν χτυπάει.
Μήπως θα μπορούσε κάποιος να επιβεβαιώσει αυτή τη συμπεριφορά; Μυρίζομαι ότι γενικότερα κάτι δεν πάει καλά γιατί τα πρώτα δύο mappings παίζουν. Δεν ξέρω αν φταίει το ότι έχω εγκαταστήσει WCF RIA Services Beta (για VS2008). Το ωραίο είναι ότι δεν έχω πετύχει ούτε ένα sample που να δουλεύει με uri mapping πέραν του κλασικού. Όλα τα blogs λένε "μπορείς να κάνεις αυτό κι αυτό κι αυτό" αλλά κανένα working code sample.
Vir prudens non contra ventum mingit