2011-12-02 2 views
0

하나의 패널에는 Treeview, 다른 패널에는 Frame이있는 실버 라이트 4 앱에서 1 페이지라고 말하면 다른 페이지로 이동할 수 있습니다. Treeview 노드를 선택하면 의 코드 뒤에있는 UserControl cs 파일의 이벤트가 발생합니다. 페이지 1의 Frame에서 다른 URI로 이동하려면 어떻게해야합니까?다른 cs 파일에서 Silverlight 프레임 컨트롤 찾기.

답변

0

가장 쉬운 방법은 NameFrame에 할당하고 자동으로 생성 된 필드를 통해 액세스하는 것입니다. 내가 바로 당신이 가지고있는 경우

이 작동합니다 : 사용자 정의 컨트롤의

<UserControl> 
    <StackPanel> 
    <StackPanel> 
     <TreeView SelectionChanged="treeView_SelectionChanged"/> 
    </StackPanel> 

    <StackPanel> 
     <!-- Additional Frame setup omitted for brevity --> 
     <Frame x:Name="frame"/> 
    </StackPanel> 
    </StackPanel> 
</UserControl> 

코드 숨김 : 사용자 정의 컨트롤의

XAML은

void treeView_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    var targetUri = this.GetTargetUriFromSelectedItem(e); // TODO: implement your target uri retrieval logic 
    this.frame.Navigate(targetUri); 
} 
+0

난에 다음을 수행했다 홈 페이지 URL로 이동하여 treeview 및 프레임이있는 위치 : MainPage rootPage = App.Current.RootVisual as MainPage; 그런 다음 string url = HtmlPage.Document.DocumentUri.ToString(); 문제는 홈 페이지의 프레임을 어딘가에 탐색하려고합니다. 홈 페이지로 이동하고 싶지 않습니다 홈 페이지 myframe이 프레임 내의 페이지를 탐색하려고합니다. 프레임 컨트롤을 찾는 방법을 모릅니다 ?? – rbucha

+0

@rbucha 내 샘플을 따라하십시오 :'Frame'에'x : Name = "frame"'을 설정하면'rootPage.frame'이 프레임이됩니다. 그러나 이것은 매우 나쁜 디자인입니다 : MainPage의 일부는 다른 파트와 직접 상호 작용해서는 안됩니다. 가장 좋은 방법은 사용자 컨트롤에 대한 이벤트를 발생시키고 MainPage에서 처리하거나 MVVM 패턴을 사용하는 것입니다. –

관련 문제