NavigationService.FragmentNavigation 이벤트
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
콘텐츠 조각에 대한 탐색이 시작될 때 발생합니다. 이는 원하는 조각이 현재 콘텐츠에 있거나 원본 XAML 콘텐츠가 로드된 후 원하는 조각이 다른 콘텐츠에 있는 경우 즉시 발생합니다.
public:
event System::Windows::Navigation::FragmentNavigationEventHandler ^ FragmentNavigation;
public event System.Windows.Navigation.FragmentNavigationEventHandler FragmentNavigation;
member this.FragmentNavigation : System.Windows.Navigation.FragmentNavigationEventHandler
Public Custom Event FragmentNavigation As FragmentNavigationEventHandler
이벤트 유형
예제
다음 예제에서는 처리 하는 방법을 보여 줍니다 FragmentNavigation 조각을 사용자 지정 탐색 동작을 제공 합니다. 이 경우 예제에서는 원본 XAML 페이지의 조각을 찾을 수 없는 경우 오류 XAML 페이지를 엽니다.
void NavigationService_FragmentNavigation(object sender, FragmentNavigationEventArgs e)
{
// Get content the ContentControl that contains the XAML page that was navigated to
object content = ((ContentControl)e.Navigator).Content;
// Find the fragment, which is the FrameworkElement with its Name attribute set
FrameworkElement fragmentElement = LogicalTreeHelper.FindLogicalNode((DependencyObject)content, e.Fragment) as FrameworkElement;
// If fragment found, bring it into view, or open an error page
if (fragmentElement == null)
{
this.NavigationService.Navigate(new FragmentNotFoundPage());
// Don't let NavigationService handle this event, since we just did
e.Handled = true;
}
}
Private Sub NavigationService_FragmentNavigation(ByVal sender As Object, ByVal e As FragmentNavigationEventArgs)
' Get content the ContentControl that contains the XAML page that was navigated to
Dim content As Object = (CType(e.Navigator, ContentControl)).Content
' Find the fragment, which is the FrameworkElement with its Name attribute set
Dim fragmentElement As FrameworkElement = TryCast(LogicalTreeHelper.FindLogicalNode(CType(content, DependencyObject), e.Fragment), FrameworkElement)
' If fragment found, bring it into view, or open an error page
If fragmentElement Is Nothing Then
Me.NavigationService.Navigate(New FragmentNotFoundPage())
' Don't let NavigationService handle this event, since we just did
e.Handled = True
End If
End Sub
설명
기본적으로 콘텐츠 조각은 콘텐츠는 명명 된 포함 된 UIElement는 UIElement 인 Name 예: 특성이 설정 되어:
<TextBlock Name="FragmentName">...</TextBlock>
다음 형식의 접미사가 있는 URI를 제공하여 XAML 조각으로 이동합니다.
# FragmentName
다음 콘텐츠 조각으로 참조 하는 URI의 예를 보여 줍니다.
http://www.microsoft.com/targetpage.xaml#FragmentName
원본 페이지가 로드된 후(이벤트가 발생한 후 LoadCompleted ) 조각 탐색이 시작되고 NavigationService XAML 조각을 찾으려고 시도합니다. XAML 조각이 발견 NavigationService 되면 는 콘텐츠 탐색기(NavigationWindow, Frame)에 조각을 표시하도록 지시합니다. 이 동작을 변경 해야 할 경우를 처리할 수 있습니다 FragmentNavigation 자체 조각 탐색 동작을 제공 합니다. FragmentNavigation 전달 되는 FragmentNavigationEventArgs 유용한 속성은이 목적을 위해 노출 하는 매개 변수 포함:
이 탐색 서비스를 소유 하는 탐색기 (NavigationWindow, Frame).
조각 이름입니다.
처리할 수 있습니다 FragmentNavigation 사용자 고유의 사용자 지정 구현으로 기본 WPF 조각 구현을 재정의 하 합니다. 이렇게 하면 경우 설정 해야 합니다 Handled 를 true
고, 그렇지 않으면 기본 WPF 조각 처리 동작이 적용 됩니다.
직접 내에서 탐색을 시작 하면이 안 된 FragmentNavigation 이벤트 처리기입니다. 하므로 FragmentNavigation 에서 새 탐색을 시작 하는 기존 탐색을 하는 동안 발생을 FragmentNavigation 이벤트 처리기가 발생 시킬 수 있는 중첩 된 탐색은 ExecutionEngineException throw 됩니다. 대신 있습니다 간접적으로 시작할 수 탐색 항목으로 사용 하 여 비동기 작업을 만들어 여 Dispatcher입니다.
참고
때 NavigationService 발생 FragmentNavigation, 발생 Application.FragmentNavigation 이벤트에는 Application 개체입니다.
중요
조각 탐색은 다음 경우에 느슨한 XAML 페이지(태그 전용 XAML 파일 및 Page
를 루트 요소로 사용)에 대해 지원되지 않습니다.
• 느슨한 XAML 페이지의 조각으로 이동할 때
• 느슨한 XAML 페이지에서 다른 느슨한 XAML 페이지의 조각으로 이동할 때
그러나 XAML 사용 완화 페이지에서 자체 조각을 탐색할 수 있습니다.
적용 대상
추가 정보
.NET