1.06k likes | 1.08k Views
Learn the basics of creating WPF applications using XAML for designing interfaces, drawing graphics, and adding animations and multimedia.
E N D
C#语言程序设计 郑宇军 《C#语言程序设计(第3版)》 清华大学出版社
Windows界面 第8章 WPF应用程序基础
第8章 WPF应用程序基础 WPF窗体和控件 使用XAML设计界面 绘制图形 动画和多媒体
图形用户界面 媒体接口 User32 DirectX GDI+ Windows
图形用户界面 界面设计 Win32 WPF Win Form 媒体接口 User32 DirectX GDI+ Windows
图形用户界面 Windows Form WPF DirectX Windows Vista, 7, 8 物理尺寸相关 XAML 外观可定制 直接支持流媒体 System.Windows • GDI+ • Windows 2003, XP • dpi相关 • Code-behind • 外观固定 • 媒体播放借助插件 • System.Windows.Forms
WPF窗体和控件 • 创建WPF程序
WPF窗体和控件 • 窗体和布局 DispatcherObject DependencyObject Visual UIElement FrameworkElement Shape Control Panel
WPF窗体和控件 • 窗体和布局 Panel StackPanel DockPanel Grid Canvas WrapPanel TabPanel UniformGrid
WPF窗体和控件 • 窗体和布局 • StackPanel: 水平或垂直堆放
WPF窗体和控件 • 窗体和布局 • StackPanel: 水平或垂直堆放 • WrapPanel: 单行/列, 自动换行
WPF窗体和控件 • 窗体和布局 • StackPanel: 水平或垂直堆放 • WrapPanel: 单行/列, 自动换行 • DockPanel: 按方向停靠
WPF窗体和控件 • 窗体和布局 • StackPanel: 水平或垂直堆放 • WrapPanel: 单行/列, 自动换行 • DockPanel: 按方向停靠 • Grid: 网格 • UniformGrid: 均匀网格
WPF窗体和控件 • 窗体和布局 • StackPanel: 水平或垂直堆放 • WrapPanel: 单行/列, 自动换行 • DockPanel: 按方向停靠 • Grid: 网格 • UniformGrid: 均匀网格 • Canvas: 坐标位置
WPF窗体和控件 • 控件内容模型 Control ContentControl Frame Label ToolTip Window HeaderedContentControl UserControl
WPF窗体和控件 • 控件内容模型 • ContentControl.Content: object
WPF窗体和控件 • 控件内容模型 Control ContentControl Frame Label ToolTip Window HeaderedContentControl UserControl
WPF窗体和控件 • Window • 属性 • Title, Icon … • WindowState, WindowStyle … • TopMost, IsActive, ShowInTaskbar … • 事件 • Closing, Closed, Activated, Deactivated …
WPF窗体和控件 • 控件内容模型 ContentControl ButtonBase Button ToggleButton GridViewColumnHeader RepeatButton CheckBox RadioButton
WPF窗体和控件 • ButtonBase • ClickMode: Release, Press, Hover • Command, CommandParameter, CommandTarget • Click: RoutedEventHandler
WPF窗体和控件 • 控件内容模型 Control ContentControl Frame Label ToolTip Window HeaderedContentControl UserControl
WPF窗体和控件 • 控件内容模型 ContentControl HeaderedContentControl TabItem GroupBox Expander
WPF窗体和控件 • 控件内容模型 • ContentControl.Content • HeaderedContentControl.Header
WPF窗体和控件 • 控件内容模型 Control ItemsControl HeaderedItemsControl MenuBase Selector TreeView StatusBar ComboBox ListBox TabControl
WPF窗体和控件 • ItemsControl • Items: ItemCollection • ItemsSource: IEnumerable public class ItemCollection { public object this[int index] { …… } }
WPF窗体和控件 • 控件内容模型 Control ItemsControl HeaderedItemsControl MenuBase Selector TreeView StatusBar ComboBox ListBox TabControl
WPF窗体和控件 • 控件内容模型 ItemsControl HeaderedItemsControl ToolBar MenuItem TreeViewItem
WPF窗体和控件 • HeaderItemsControl • Header: object • Items, ItemsSource (继承)
WPF窗体和控件 • 文本框控件 Control TextBoxBase PasswordBox TextBox RichTextBox
WPF窗体和控件 • TextBoxBase • Copy(), Cut(), Paste() • Redo(), Undo() • LineUp(), LineDown(), LineLeft(), LineRight() • PageUp(), PageDown(), PageLeft(), PageRight()
WPF窗体和控件 • 范围控件 Control RangeBase Slider ScrollBar ProgressBar
WPF窗体和控件 • RangeBase • Value, Minimum, Maximum: double
使用XAML设计界面 WPF XAML XPS XAML XAML WF XAML SilverLight XAML
使用XAML设计界面 WPF XAML XPS XAML XAML WF XAML SilverLight XAML BAML
使用XAML设计界面 StartupUri="MainWindow.xaml" MainWindow.xaml App.xaml App.xaml.cs MainWindow.xaml.cs
使用XAML设计界面 XAML元素 .NET对象
使用XAML设计界面 编译器生成类 <Application x:Class="WpfContentExample.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="MainWindow.xaml"> ………… ………… </Application> • 根元素 • Application • Window • Page
使用XAML设计界面 命名元素 <TextBox Name="textBox1" Text="请在这里输入邮箱地址..." /> • 简单属性 • 属性值:文本描述 • 类型解析:TypeConverter
使用XAML设计界面 <Grid> <Grid.Background> <LinearGradientBrush> <GradientStop Offset='0' Color='Red' /> <GradientStop Offset='.5' Color='White' /> <GradientStop Offset='1' Color='Blue' /> </LinearGradientBrush> </Grid.Background> …… <Grid> • 复杂属性 • Parent.Property
使用XAML设计界面 <Grid> …… <Grid.RowDefinitions> <RowDefinition Height="50" /> <RowDefinition Height="Auto" /> <RowDefinition /> </Grid.RowDefinitions> <TextBox Name="textBox1" Text="请输入邮箱地址..." /> <Grid> 元素嵌套
使用XAML设计界面 <Grid> …… <Grid.RowDefinitions> <RowDefinition Height="50" /> <RowDefinition Height="Auto" /> <RowDefinition /> </Grid.RowDefinitions> <TextBox Name="textBox1" Text="请输入邮箱地址..." Grid.Row="1"/> <Grid> 附加属性
使用XAML设计界面 <Window.Resources> <LinearGradientBrush x:Key="lgBrush"> <GradientStop Offset='0' Color='Red' /> <GradientStop Offset='.5' Color='White' /> <GradientStop Offset='1' Color='Blue' /> </LinearGradientBrush> </Window.Resources> <Grid Background="{StaticResource lgBrush}"> …… </Grid> <TextBox Name="textBox1" Background="{StaticResourcelgBrush}"> 定义资源
使用XAML设计界面 <Window.Resources> <LinearGradientBrush x:Key="lgBrush"> <GradientStop Offset='0' Color='Red' /> <GradientStop Offset='.5' Color='White' /> <GradientStop Offset='1' Color='Blue' /> </LinearGradientBrush> </Window.Resources> <TextBox Name="textBox1" Background="{DynamicResourcelgBrush}"> • 定义资源 • 静态资源 • 动态资源
使用XAML设计界面 <Button.Resources> …… </Button.Resources> <Window.Resources> …… </Window.Resources> <Application.Resources> …… </Application.Resources> • 定义资源 • 控件资源 • 窗体/页面资源 • 应用程序资源
使用XAML设计界面 <ResourceDictionary> …… </ResourceDictionary> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="res1.xaml" /> <ResourceDictionary Source="res2.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> …… </Application.Resources> • 定义资源 • 控件资源 • 窗体/页面资源 • 应用程序资源 • 资源字典
使用XAML设计界面 <Button Name="button1" Content="提交" Click="button1_Click" /> private void button1_Click(object sender, RoutedEventArgs e) { } 事件绑定
使用XAML设计界面 <Ellipse Name="ellipse1" Height="{Binding ElementName=slider1, Path=Value}" Width="{Binding ElementName=slider2, Path=Value}" Stroke="Black" Fill="Blue"/> • 表达式绑定 • ElementName • Path
XAML基础 <Window.Resources> <FontFamily x:Key="ff1"> 黑体 </FontFamily> <FontWeight x:Key="fw1"> Bold</FontWeight> <FontSize x:Key="fs1"> 17 </FontSize> </Window.Resources> <Button Content="button1" FontFamily="{StaticResourceff1}" FontWeight="{StaticResourcefw1}" FontSize="{StaticResourcefs1}" /> 样式Style
使用XAML设计界面 <Style x:Key="Sty1"> <Setter Property="Control.FontFamily" Value="黑体" /> <Setter Property="Control.FontWeight" Value="Bold" /> <Setter Property="Control.FontSize" Value="17" /> </Style> <Button Content="button1" Style="{StaticResource Sty1}" /> • 样式Style • Setter: Property, Value
使用XAML设计界面 <Style x:Key="Sty1"> <Setter Property="Control.FontFamily" Value="黑体" /> <Setter Property="Control.FontWeight" Value="Bold" /> <Setter Property="Control.FontSize" Value="17" /> </Style> <Button Content="button1" Style="{StaticResource Sty1}" /> <Label Content="浙江工业大学" Style="{StaticResource Sty1}" /> • 样式Style • Setter: Property, Value