WPF 学习笔记(详细版).pdf
文本预览下载声明
WPF
WPF
WWPPFF 学习笔记
目录
WPF 学习笔记1
Application1
Dispatcher3
Navigation5
XAML9
DependencyProperty15
RoutedEvent20
Resource24
Binding31
Silverlight - Hello, World!68
Application
Application
AApppplliiccaattiioonn
和 WinForm 类似,WPF 同样需要一个 Application 来统领一些全局的行为和操作,并且每个 Domain 中
只能有一个 Application 实例存在。和 WinForm 不同的是 WPFApplication 默认由两部分组成 :
App.xaml 和 App.xaml.cs,这有点类似于 DelphiForm,将定义和行为代码相分离。当然,WebForm 也
采用了类似的方式。XAML 从严格意义上说并不是一个纯粹的 XML 格式文件,它更像是一种 DSL,它的
所有定义都直接映射成某些代码,只不过具体的翻译工作由编译器完成而已。
下面是一个简单的 App 定义。
public partial class App : Application
{
}
paritial
paritial
当你在自动生成的 Project 代码中看到 ppaarriittiiaall 时,应该下意识去找找 Thiscodewasgeneratedbya
obj\Debug\App.g.cs
obj\Debug\App.g.cs
tool.…… 不过这次自动生成的代码存放位置更加古怪 ——oobbjj\\DDeebbuugg\\AApppp..gg..ccss。
public partial class App : System.Windows.Application
{
[DebuggerNonUserCode]
public void InitializeComponent()
{
this.StartupUri = new System.Uri(Window1.xaml, System.UriKind.Relative);
}
[STAThread]
[DebuggerNonUserCode]
public static void Main()
{
App app = new App();
app.InitializeComponent();
app.Run();
}
}
App.StartupUri MainWindow App.Run() STAThread
用于设置 , 启动消息循环。当然,还有那个 ,这意味
着 WPF 依旧使用一个 UIThread 来处理 UIMessage。
我们完全可以舍弃自动生成的代码,自己手工写一个 App。
public class App : Application
{
[STAThread]
private static void Main()
{
var app = new App();
var window = new Window { Title = WPF };
app.Run(window);
}
}
Application 提供了一些实用的属性和方法。
Current
Current
CCuurrrreenntt: 获取 Domain 中默认的 Application 实例。
MainWindow
MainWindow
MMaaiinnWWiinnddooww: 获取主窗口实例。
Windows
Wind
显示全部