界面开发中winform开发应用程序比较方便快捷,但不够灵活,程序体积大,wpf可以解决这些问题,Windows Presentation Foundation (简称 WPF),WPF是微软Windows UI框架,.NET Framework 3.0的一部分。统一的编程模型、语言和框架,就象网页开发中的前后端分离,只不过WPF是应用于桌面窗体程序。WPF是微软新一代图形系统,基于DirectX 9/10技术, WPF提供了超丰富的.NET UI 框架,集成了矢量图形,丰富的流动文字支持(flow text support),2D 3D视觉效果和强大无比的控件模型框架。

特点:

1、呈现效果不受分辨率的影响
2.基于DirectX 3d技术,可以做出炫酷的界⾯
3.提供UI框架,集成了⽮量图形、流动⽂字⽀持、3d视觉效果和控件模型框架、
4. UI与业务逻辑彻底分离,UI-XAML描述(底层wpf引擎是把元素解释成对应的对 象)
5. xp server2003 到 window7及以后的操作系统版本 都可以⽀持
6.基于数据驱动,数据是核⼼

学习基础:

  1. 要会一门.NET所支持的编程语言。例如C#。
  2. 会一点“标准通用标记语言”:WPF窗体程序使用的XAML语言,也属于“标准通用标记语言”的一个分支。如果以前接触过XML、HTML、XHTML、ASP.NET之类的“标准通用标记语言”,对于学习是有所帮助的。
  3. 有一定的WinForm或ASP.NET经验,主要是对控件事件的处理要有所了解。
  4. 拥有良好的面向对象的思想:在WPF中,经常要灵活运用各种继承关系、多态、重载等。
  5. DataBinding要有所了解:Binding是WPF的一大亮点。
  6. 对设计模式要有一定的了解:当然是越深入越好了,在实际项目中,各种设计模式经常交融使用。

建立wpf项目

项目文件

WPF应用程序”会在“引用”里面自动添加 PresentationCore、PresentationFramework、WindowsBase三大核心程序集

MainWindow.xaml文件,它负责界面的ui设计布局,在这里面通常全部写UI的东西,包括窗口的外观,控件等
MainWindow.xaml.cs是处理界面相关的操作,也就是界面的后台逻辑文件
App.xaml.是系统应用相关的初始化,其中有启动窗口文件

MainWindow.xaml文件说明

通常可看到两个 XML 命名 空间声明
第⼀个声明默认映射整个 WPF 客户端/框架 XAML 命名空间: xmlns=“http://schemas.microsoft.com/winfx/2006/xaml/presentation”

第⼆个声明映射单独的 XAML 命名空间,通常将其映射到 x: 前缀。 xmlns:x=“http://schemas.microsoft.com/winfx/2006/xaml” 这些声明之间的关系是 x: 前缀映射⽀持作为 xaml 语⾔定义⼀部分的内部函数, ⽽ WPF 是⼀种将 xaml ⽤作语⾔的实现,并为 xaml 定义了其对象的词汇。

grid就是一个布局控件,一个window下只能有一个grid控件,而我们要设计的布局就必须包含在grid控件中。

XAML语法

属性

<Button> <Button.Background><!--设置背景颜色--> <SolidColorBrush Color="Blue"/> </Button.Background> <Button.Foreground><!--设置前景色 显示--> <SolidColorBrush Color="Red"/> </Button.Foreground><!--按钮上的文字内容--> <Button.Content> This is a button </Button.Content></Button>

内容属性

仅对内容属性而言,可以在 XAML 标记中设置该属性时省略属性元 素,并在标记中生成更直观的父级/子级形式

<Border><TextBox Width="300"/></Border> <Border> <Border.Child> <TextBox Width="300"/> </Border.Child> </Border>

文本内容

XAML 元素可直接将文本作为其内容来处理。 若要实现此功能,必须满足以下条件之一:

类必须声明一个内容属性,并且该内容属性必须是可赋值给字符串的类型(该类型可以是 Object)。
类型必须声明一个类型转换器,该类型转换器将文本内容用作初始化文本。 例如, 将 Blue 的内容值转换为画笔。 这种情况实际上并不常见。
类型必须为已知的 XAML 语言基元。

<StackPanel> <Button>First Button</Button><!--按钮文本显示--> <Button>Second Button</Button></StackPanel>

语法事件

特性语法还可用于事件成员,而非属性成员。 在这种情况下,特性的名称为事件的名称。 在 XAML 事件的 WPF 实现中,特性的值是实现该事件的委托的处理程序的名称。例中将Click事件赋予给在标记中创建的Button。

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="ExampleNamespace.ExamplePage"> <Button Click="Button_Click" >Click Me!</Button></Page>

常用UI控件

Windows Presentation Foundation (WPF) 中,Button、ComboBox 等控件都是 FrameworkElement 类的派生类,因此它们共享许多相同的属性。以下是一些常用控件(如 Button 和 ComboBox)通常具有的共同属性:

Width 和 Height: 这两个属性用于设置控件的宽度和高度。

Margin: 控件与其周围元素之间的间距。

Padding: 控件内部内容与控件边界之间的间距。

HorizontalAlignment 和 VerticalAlignment: 控制控件在其父容器中的水平和垂直对齐方式。

Foreground: 控件中文本的颜色。

Background: 控件的背景色。

BorderBrush 和 BorderThickness: 控件边框的颜色和厚度。

FontFamily, FontSize, FontStretch, FontStyle, FontWeight, and FontStretch: 这些属性用于定义控件中文本的字体特性。

IsEnabled: 一个布尔值,用于确定控件是否可以对用户交互作出响应。

Visibility: 控制控件是否可见。可以是 Visible、Hidden 或 Collapsed。

Opacity: 控件的不透明度,范围从 0(完全透明)到 1(完全不透明)。

Tag: 一个对象,可以用于存储与控件关联的任何自定义数据。

Name: 控件的唯一标识符,可以在代码中引用。

Focusable: 布尔值,确定控件是否可以通过键盘或鼠标获得焦点。

ContextMenu: 当用户右键点击控件时显示的上下文菜单。

ToolTip: 当用户将鼠标悬停在控件上时显示的提示信息。

Cursor: 当鼠标悬停在控件上时显示的鼠标光标类型。

OpacityMask: 用于定义控件不透明度的图像。

Clip: 用于定义控件的裁剪区域的几何形状。

Effect: 用于应用视觉效果(如模糊、阴影等)到控件。

Triggers, Styles, and Templates: 这些高级特性允许你定义控件的外观和行为。