가장 쉬운 방법은 Name
을 Frame
에 할당하고 자동으로 생성 된 필드를 통해 액세스하는 것입니다. 내가 바로 당신이 가지고있는 경우
이 작동합니다 : 사용자 정의 컨트롤의
<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);
}
난에 다음을 수행했다 홈 페이지 URL로 이동하여 treeview 및 프레임이있는 위치 : MainPage rootPage = App.Current.RootVisual as MainPage; 그런 다음 string url = HtmlPage.Document.DocumentUri.ToString(); 문제는 홈 페이지의 프레임을 어딘가에 탐색하려고합니다. 홈 페이지로 이동하고 싶지 않습니다 홈 페이지 myframe이 프레임 내의 페이지를 탐색하려고합니다. 프레임 컨트롤을 찾는 방법을 모릅니다 ?? – rbucha
@rbucha 내 샘플을 따라하십시오 :'Frame'에'x : Name = "frame"'을 설정하면'rootPage.frame'이 프레임이됩니다. 그러나 이것은 매우 나쁜 디자인입니다 : MainPage의 일부는 다른 파트와 직접 상호 작용해서는 안됩니다. 가장 좋은 방법은 사용자 컨트롤에 대한 이벤트를 발생시키고 MainPage에서 처리하거나 MVVM 패턴을 사용하는 것입니다. –