Windows Presentation Foundation 学习(2)
原创
©著作权归作者所有:来自51CTO博客作者laijimin1217的原创作品,请联系作者获取转载授权,否则将追究法律责任
窗口不习惯呀
开始学习WPF了,使用vs2008创建WPF应用程序,如果增加登录窗口,如何在启动主窗口之前启动它呢。按照winForm的思路找Main方法,在obj文件夹中找到了app.g.cs文件,其中包括如下代码:
/// <summary>
/// App
/// </summary>
public partial class App : System.Windows.Application {
/// <summary>
/// Application Entry Point.
/// </summary>
[System.STAThreadAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public static void Main() {
DanZhaoBaoMing.App app = new DanZhaoBaoMing.App();
app.Run();
}
}
可是这个代码是自动生成的,修改无效。于是自己尝试在app.waml.cs中增加Main方法,此时提示已经有一个Main方法了。于是开始从网上查,终于解决问题:
vs2008中,创建的WPF项目,在app.waml文件的属性中有个设置“生成操作”,默认值是“ApplicationDefinition”,将其改为“Page”即可,此时系统使用自定义的Main方法。
接下来就可以修改按照WinForm的习惯修改Main方法了:
[STAThread]
public static void Main()
{
Window2 w2 = new Window2();
//WPF中Window的ShowDialog方法返回的DialogResult为Nullable<bool>类型
//在Window2中点击确定按钮时,应该该其DialogResult属性赋值为:true //在Window2中点击取消按钮时,应该该其DialogResult属性赋值为:false,或设置取消按钮的IsCancel属性为true
if (w2.ShowDialog()?? false)
{
Window1 w1 = new Window1();
w1.Title = "tttttt"; App a = new App();
a.InitializeComponent();
a.Run(w1);
}
}
这样下来运行程序发现登录成功后,主窗口出现了两个,怎么回事?
将a.Run(w1);改为a.Run();就好了。查!!!
打开app.waml的waml视图,发现app的属性中有一个属性叫StartupUri,其值为Window1.waml如下图示:
原来微软为了让广大的开发人员使用简单,竟然将vb.net中的启动窗体也借鉴过来了。
至此我们可以随心所欲的控制WPF中的窗口-Window了!!