首页 > 解决方案 > 从框架调用父函数

问题描述

我有一个与设计师一起构建的 WPF 应用程序。在其中我有一个框架,我正在加载一个页面。

老实说,我迷路了。由于缺乏关于 MVVM 的指导和能力,我希望有人能够帮助我了解如何做我想做的事情。

在页面中,我需要调用公共方法“public void UpdateTxt()”。我知道这已经做了一百万次,但我就是不明白。我的大部分搜索也会拉取 web/javascript 结果。

我以前在 winform 环境中使用两个窗口做过类似的事情。

 public partial class setupApp : Form
    {
        private Form1 m_parent;


        public setupApp(Form1 frml)
        {
            InitializeComponent();
            m_parent = frml;

        }

虽然上面的代码在 winform 中工作,使我能够从父窗口中找到所有公共函数,但我似乎无法将其转换为 WPF。

我努力了

public partial class Childpage: Page
        {
            private MainWindow m_parent;


            public Childpage(MainWindow mw1)
            {
                InitializeComponent();
                m_parent = mw1;

            }

这不会在构建时引发错误,但一旦调试器启动就无法中断模式。我也不知道这个错误是什么意思。

在类型上找不到匹配的构造函数

为什么不翻译 C# 后端代码?有没有更好的办法?

标签: c#wpf

解决方案


我认为您Source在 xaml 代码中设置了 Frame 的属性,如下所示:

<Frame Source="SamplePage.xaml"/> 

在这种情况下,您需要在页面中添加一个无参数构造函数。

public partial class SamplePage
{
    private MainWindow _parentWindow;

    public SamplePage()
    {
        InitializeComponent();
    }

    public SamplePage(MainWindow parentWindow) : this()
    {
        _parentWindow = parentWindow;
    }
}

但是,如果您想将父窗口传递给子页面,您可以在代码隐藏中设置框架内容。像这样:

SampleFrame.NavigationService.Navigate(new SamplePage(this));

在这种情况下,您不需要无参数构造函数。


推荐阅读