2013-07-10 135 views
4

我在MainWindow中有一个页面转换(一个控件),我有很多用户控制页面,我想从我的用户控制页面访问MainWindow中的页面转换?我怎么做? 我想:从用户控制页面访问MainWindow的控件。 WPF C#

 Story page = new Story(); 
     NavigationService nav = NavigationService.GetNavigationService(this); 
     // Navigate to the page, using the NavigationService 
     // if (nav != null) 
     // { 
     // nav.Navigate(page); 
      MainWindow test = new MainWindow(); 
      test.pageTransition1.ShowPage(page); 

    // } 

回答

2

你可以找到背后的用户控件代码这样的WpfPageTransitions.PageTransition控制:

public static WpfPageTransitions.PageTransition FindPageControl(DependencyObject child) 
{ 
    DependencyObject parent= VisualTreeHelper.GetParent(child); 

    if (parent == null) return null; 

    WpfPageTransitions.PageTransition page = parent as WpfPageTransitions.PageTransition; 
    if (page != null) 
    { 
     return page; 
    } 
    else 
    { 
     return FindPageControl(parent); 
    } 
} 

然后你可以使用它像这样:

this.FindPageControl(this).ShowPage(...); 
+0

嘿感谢您的答复,但PageTransition不是一个WPF控件,我添加了从控制其他来源.. – user2376998

+0

所以当我这样做,PageTransition将会丢失 – user2376998

+0

从哪里添加它?你能展示一些代码吗? –

10
Application.Current.MainWindow 

使用此功能可以从任何地方访问MainWindow。

0

创建一个方法中主窗口的选择页面过渡

public void ChangePage() 
     { 
      pageTransitionControl.ShowPage(new NewData()); 
     } 

然后在子控件

private void btnUpdate_Click(object sender,RoutedEventArgs e) 
     { 

      MainWindow win = (MainWindow)Window.GetWindow(this); 
      win.ChangePage(); 
     }