多窗口WPF应用程序:发送值和共享数据

本文关键字:共享 数据 窗口 WPF 应用程序 | 更新日期: 2023-09-27 18:22:23

我是WPF的新手,目前已经设置了一个1窗口的WPF。然而,现在我需要一个新的窗口来共享Dictionary clientData;当我单击主窗口中ListBox中的条目时,我需要将entryId传递到可以访问clientData[entryId]的新窗口。

我过去一直制作单窗口应用程序,所以我对这方面还是个新手。

这是怎么做到的?

多窗口WPF应用程序:发送值和共享数据

通常,在两个窗口之间有两种简单的通信方式。

可能性1:您可以在两个窗口中创建publicstatic变量,如下所示:

    public static int Property1 { get; set; }

可能性2:创建一个参数化方法来显示子窗口,并将变量返回为public,如下所示:

    public int Property2 { get; set; }
    public void ShowThis(int parameter)//Gets called by your MainWindow
    {
        this.Property2 = parameter;
        this.Show();
    }

编辑

基于您的问题:

您的子窗口:

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
    }
    public void ShowThis<T>(IEnumerable<T> data)
    {
        listBox.Items.Clear();
        foreach(var item in data)
        {
            listBox.Items.Add(item);
        }
        this.Show();
    }
}

你的主窗口会是这样的:

public partial class MainWindow : Window
{
    Window1 window1;//your subwindow
    public MainWindow()
    {
        InitializeComponent();
        window1 = new Window1();
    }
    private void buttonShow_Click(object sender, RoutedEventArgs e)//button to show subwindow
    {
        int[] testData = new int[5] { 1, 3, 5, 7, 9 };
        window1.ShowThis(testData);
    }
}