从用户控件页面访问MainWindow的控件。WPF C#

4
我是一名有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:

我在 MainWindow 中有一个页面转换控件,我有很多用户控件页面,我想从我的用户控件页面访问 MainWindow 中的页面转换控件?我该怎么做? 我尝试过:

        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);

    //    }
3个回答

12
Application.Current.MainWindow

使用此方法,您可以从任何地方访问MainWindow。


2
您可以从UserControls代码后台找到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(...);

嘿,谢谢回复,但PageTransition不是WPF控件,我从其他来源添加了该控件。 - user2376998
当我执行上述操作时,PageTransition将会丢失。 - user2376998
我添加了页面转换的引用并将其添加到控件选项卡中,我从这里获取了这个页面转换:http://www.codeproject.com/Articles/197132/Simple-WPF-Page-Transitions - user2376998
你只需要使用完整的命名空间引用对象。我已经编辑了我的代码。也许你可以编辑一下你的问题,这样可以为其他用户澄清问题。 - Romano Zumbé

1
在主窗口中创建一个用于选择页面转换的方法
 public   void ChangePage()
        {
            pageTransitionControl.ShowPage(new NewData());
        }

然后在子控件中

private void btnUpdate_Click(object sender,RoutedEventArgs e)
        {

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接