2013-03-20 87 views
0

我让WPF应用程序的两个实例如何实现这个场景在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 

我想申请每个窗口上面的窗口加载设置(在构造函数中)。
我当前的代码是

public MainWindow(string window) 
{ 
    if(window=="1") 
     { 
     lbl.Content=setting.window1_city 
     } 
    if(window=="2") 
     { 
     lbl.Content=setting.window2_city 
     } 
}and so 

但是,这是非常困难的,如果节数用户设置更多的应用。如果用户做了任何更改,那么我必须根据窗口保存这些值。所以我必须使用更多的if循环。
有没有其他的方法来实现这个?

+0

是否设置特定类型的变量?还希望这些设置只能在第一次设置或者动态变化后才能在UI上反映出来? – ethicallogics 2013-03-20 06:18:21

+0

是的。需要在UI中动态显示 – balaji 2013-03-20 06:23:05

+0

您能否通知设置属性?就像window1_city的变化,你可以通知。如果你可以thn我认为你可以实现这一点使用条件绑定。 – ethicallogics 2013-03-20 06:27:42

回答

0

使用每个窗口DataContext属性传递具有所需属性的对象,在Startup之前,在Show之前传递该对象。 也许你会更好地使用一些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(); 
     } 
    } 
+0

您能否使用DataContext为我的场景提供一个简单的示例 – balaji 2013-03-20 06:35:00

相关问题