我允许两个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 load(在构造函数中)应用上述设置 我目前的代码是
public MainWindow(string window)
{
if(window=="1")
{
lbl.Content=setting.window1_city
}
if(window=="2")
{
lbl.Content=setting.window2_city
}
}and so
但如果用户设置不多,则很难应用。如果用户进行了任何更改,那么我将根据窗口保存这些值。所以我要使用更多no.of if循环 还有其他方法可以实现吗?
答案 0 :(得分: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();
}
}