2009-10-08 198 views
3

問:有沒有辦法讓一個按鈕的行爲像一個用戶控件內的超鏈接WPF導航通過按鈕


我一直在四處尋找了幾天,並沒有發現任何人誰處理了這一點。如何使用按鈕在WPF應用程序中導航?具體來說,您如何在用戶控件內部的按鈕導航它的主機框?請記住,用戶控件無法直接訪問主機框架。如此簡單:

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

不起作用。我正在使用用戶控件。如果你只使用頁面,這是你正在尋找的答案,如果你正在使用UserControls,請看下面的答案。

回答

3

我覺得自己像一個混日子球回答我的問題,但我理解了它的持續多久!

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 

這個功能我發現這裏(http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/f8b02888-7e1f-42f4-83e5-448f2af3d207)將允許用戶控制的內部使用的NavigationService的。

〜N