委托是在两个 windows 之间共享变量的好方法吗?
Are delegates a good approach to share variables between two windows?
一般来说,委托是在 WPF 和 C# 中的两个 forms/windows 之间共享变量的好方法吗?我知道有很多方法可以在两个 windows 之间传递 functions/variables,我想知道是否有更好的方法,代码更少,更让人头疼。
谢谢。
示例:
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);
}
¿使用普通静态 class 怎么样?
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;
}
大多数情况下都有效
就个人而言,我会使用某种形式的依赖注入,并使用它在两个 windows 之间有效地共享设置 class。
本质上,windows 都注入了相同的 class,并且它们都可以在设置 class 中共享相同的变量。
如果您不想使用依赖注入,请改用单例(google 了解更多信息)。
我发现这两种方法都很有效。通常,您可以添加一些包装器以将设置保存到文件中,我建议 JSON.NET.
一般来说,委托是在 WPF 和 C# 中的两个 forms/windows 之间共享变量的好方法吗?我知道有很多方法可以在两个 windows 之间传递 functions/variables,我想知道是否有更好的方法,代码更少,更让人头疼。
谢谢。
示例:
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);
}
¿使用普通静态 class 怎么样?
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;
}
大多数情况下都有效
就个人而言,我会使用某种形式的依赖注入,并使用它在两个 windows 之间有效地共享设置 class。
本质上,windows 都注入了相同的 class,并且它们都可以在设置 class 中共享相同的变量。
如果您不想使用依赖注入,请改用单例(google 了解更多信息)。
我发现这两种方法都很有效。通常,您可以添加一些包装器以将设置保存到文件中,我建议 JSON.NET.