如何在 WPF 的主窗口页面中运行线程?

3

我创建了一个页面,并在该页面上添加了一个按钮。

然后,我将此页面放置在主窗口的框架中。

MainUi.Content = new Page1();

当我点击按钮时,我想在主窗口中启动一个线程。

在MainWindow中

namespace WpfApp3
{

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    public void SendMessage()
    {
        MessageBox.Show("This is a test massage.");
        //And more
    }
}

页面内

namespace WpfApp3.Pages
{

    public partial class Page1: Page
    {
        public Page1()
        {
            InitializeComponent();
        }

        private void SendMessage_Click(object sender, RoutedEventArgs e)
        {
             SendMessage(); 
             //I want run this thread from here
        }
    }
}

感谢。
1个回答

2
你可以像@Nawed Nabi Zada建议的那样,向Page注入对窗口的引用,或者使用静态Window.GetWindow方法获取页面的父窗口的引用:

你可以通过静态Window.GetWindow方法获取页面的父窗口的引用,也可以像@Nawed Nabi Zada建议的那样,向Page注入对窗口的引用:

private void SendMessage_Click(object sender, RoutedEventArgs e)
{
    MainWindow win = Window.GetWindow(this) as MainWindow;
    win.SendMessage();
}

非常感谢,已经起作用了!窗口定义不是唯一需要更改为MainWindow的。MainWindow win = (MainWindow)Application.Current.MainWindow; - Seyfullah Nazikkol
1
@SeyfullahNazikkol: win 应该是 MainWindow 类型。请查看我的编辑。 - mm8

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