2009-10-08 8 views
3

Question: Existe-t-il un moyen de faire en sorte qu'un bouton se comporte comme un lien hypertexte à l'intérieur d'un contrôle utilisateur?Navigation WPF via les boutons


J'ai cherché pendant quelques jours maintenant et n'ont pas trouvé quelqu'un qui a abordé ce sujet. Comment utilisez-vous un bouton pour naviguer dans une application WPF? Plus précisément, comment faites-vous un bouton à l'intérieur d'un contrôle utilisateur naviguer dans son cadre hôte? Gardez à l'esprit que les contrôles Utilisateur n'ont pas d'accès direct au cadre de l'hôte. si simplement:

this.NavigationService.Navigate(new Uri(this.addressTextBox.Text)); 

ne fonctionnera pas. J'utilise les contrôles utilisateur. Si vous n'utilisez que des pages, voici la réponse que vous cherchez, si vous utilisez UserControls, regardez ma réponse ci-dessous.

Répondre

3

Je me sens comme une boule de gaffe pour répondre à ma propre question, mais je pensais sortir enfin!

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click 
    Dim pg As Page = CType(GetDependencyObjectFromVisualTree(Me, GetType(Page)), Page) 
    Dim newPage As %desired uri here% = New %desired uri here% 
    pg.NavigationService.Navigate(newPage) 
End Sub 

Private Function GetDependencyObjectFromVisualTree(ByVal startObject As DependencyObject, ByVal type As Type) As DependencyObject 
    'Walk the visual tree to get the parent(ItemsControl) 
    'of this control 
    Dim parent As DependencyObject = startObject 

    While (Not (parent) Is Nothing) 
     If type.IsInstanceOfType(parent) Then 
      Exit While 
     Else 
      parent = VisualTreeHelper.GetParent(parent) 
     End If 

    End While 
    Return parent 
End Function 

Cette fonction i trouvé ici (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/f8b02888-7e1f-42f4-83e5-448f2af3d207) permettra l'utilisation de NavigationService à l'intérieur d'un contrôle utilisateur.

~ N

Questions connexes