如何在wpf中实现此场景

如何在wpf中实现此场景,wpf,Wpf,我允许wpf应用程序的两个实例 private void Application_Startup(object sender, StartupEventArgs e) { Process thisProc = Process.GetCurrentProcess(); if (Process.GetProcessesByName(thisProc.ProcessName).Length == 1) { var

我允许wpf应用程序的两个实例

private void Application_Startup(object sender, StartupEventArgs e)
    {
        Process thisProc = Process.GetCurrentProcess();
        if (Process.GetProcessesByName(thisProc.ProcessName).Length == 1)
        {    
            var w1 = new MainWindow("1");
            w1.Show();
        }
        else if (Process.GetProcessesByName(thisProc.ProcessName).Length == 2)
        {
           var w2 = new MainWindow("2");
            w2.Show();
        }
    }
每个窗口具有不同的用户设置,如下所示 在Settings.setting中

window1_city="xxx",window1_country="yyy"
window2_city="aaa",window2_country="bbb" .....etc
我想在windows加载(在构造函数中)上应用上述设置。
我现在的代码是

 public MainWindow(string window)
 {
   if(window=="1")
      {
        lbl.Content=setting.window1_city
      }
    if(window=="2")
      {
        lbl.Content=setting.window2_city
      }
 }and so
但是,如果用户设置的数量更多,则很难应用此功能。若用户做了任何更改,那个么我必须根据窗口保存这些值。因此,我必须使用更多数量的if循环。

是否有其他方法实现此功能?

使用每个窗口的
DataContext
属性传递一个包含所有所需属性的对象,在
启动
中传递该对象,然后再
显示
。 如果应用程序变得更复杂,也许你最好使用一些MVVM工具包。 使用普通DataContextes的示例如下:

private void Application_Startup(object sender, StartupEventArgs e)
    {
        Process thisProc = Process.GetCurrentProcess();
        if (Process.GetProcessesByName(thisProc.ProcessName).Length == 1)
        {    
            var w1 = new MainWindow("1");
            var a = new MySettings();
            a.x=...;
            a.y=....;
            w1.DataContext=a;
            w1.Show();
        }
        else if (Process.GetProcessesByName(thisProc.ProcessName).Length == 2)
        {
           var w2 = new MainWindow("2");
           var b = new MySettings();
            b.x=...;
            b.y=....;
            w2.DataContext=b;
            w2.Show();
        }
    }

设置变量是否为特定类型?而且,您希望这些设置仅在第一次设置,或者动态设置,就像更改完成后,它应该反映在UI上一样?是的。需要在UICan中动态显示通知设置的属性。如果window1\u城市发生变化,您可以通知。如果可以的话,我想你可以使用条件绑定来实现。你能为我使用DataContext的场景提供一个简单的例子吗