委托是在两个窗口之间共享变量的好方法吗?

本文关键字:共享变量 之间 方法 窗口 两个 | 更新日期: 2023-09-27 17:50:24

委托是在WPF和c#中两个窗体/窗口之间共享变量的好方法吗?我知道在两个窗口之间传递函数/变量的很多方法,我想知道是否有更好的方法,更少的代码和头痛。

谢谢。

的例子:

internal delegate void getName(String name);
internal static event getName evtGetUsername;
private void btn1_Click(object sender, RoutedEventArgs e)
    {
        evtGetUsername(textBox.Text);
    }

另一种形式:

public MainWindow()
    {
        InitializeComponent();
        Window2.evtGetUsername += new Window2.getName(Name);
    }
    public void Name(String name)
    {
        lstBox.Items.Add(name);
    }

委托是在两个窗口之间共享变量的好方法吗?

就我个人而言,我会使用某种形式的依赖注入,并使用它来有效地在两个窗口之间共享设置类。

本质上,两个窗口都注入了相同的类,并且它们都可以在设置类中共享相同的变量。

如果你不想使用依赖注入,那就使用单例模式(谷歌搜索更多信息)

我发现这两种方法都很有效。通常,您可以添加一些包装器来将设置持久化到文件中,我建议使用JSON.NET。

>使用一个通用的静态类怎么样?

public static class Session { 
    public static String Name { get; set; }
}
//Window1
public Window1() {
    Session.Name = "Window 1 instantiated.";
}
//Window2
public Window2() {
    txtControl.Text = Session.Name;
}

这在大多数情况下都有效