没有合适的资源?快使用搜索试试~ 我知道了~
WPF的控件编程、面板布局、2D图形等具体内容。
3星 · 超过75%的资源 需积分: 9 19 下载量 138 浏览量
2009-10-06
11:31:28
上传
评论
收藏 2.83MB DOC 举报
温馨提示
试读
64页
介绍了WPF的核心编程模型,从本节介绍WPF控件的具体事宜方法,包括如何在各种WPF容器(Canvas、Grid、StackPanel、WrapPanel等)中组织控件,如何构建一个拥有菜单、工具条和状态条的主窗口等。
资源推荐
资源详情
资源评论
第 13 章 WPF 编程
上一章介绍了 WPF 的基本知识,本章将介绍 WPF 的控件编程、面板布局、2D 图形等
具体内容。
13.1 WPF 控件编程
前面介绍了 WPF 的核心编程模型,从本节介绍 WPF 控件的具体事宜方法,包括如何
在各种 WPF 容器(Canvas、Grid、StackPanel、WrapPanel 等)中组织控件,如何构建一个
拥有菜单、工具条和状态条的主窗口等。
13.1.1 控件库
WPF 提供了完整的控件族,下表按功能列出了核心 WPF 控件:
WPF 的核心控件
控件类别 控件类 说明
核心用户输入 Button、RadioButton、ComboBox、CheckBox、Expand
er、ListBox、ToggleButton、TreeView、ContextMenu
、ScrollBar、Slider、TabControl、TextBox、RepeatButt
on、RichTextBox、Label
用于创建关键用户界面
窗口框架修饰 Menu、ToolBar、StatusBar、ToolTip、ProgressBar 用于装饰 Window 对象框架
媒体 Image、MediaElement、SoundPlayerAction 支持图像显示和音视频播放
布局 Border、Canvas、DockPanel、Grid、GridView、Group
Box、Panel、StackPanel、Viewbox、WrapPanel
用于布局管理的分类和组织
控件
对话框 PasswordBox、PrintDialog、FileDialog、OpenFileDialo
g、SaveFileDialog
封装了常见的公用对话框
文档 DocumentViewer、FlowDocumentPageViewer、FlowDo
cumentScrollViewer、FlowDocumentReader
用于高级文档处理
其中,三个与文件相关的公用对话框类 FileDialog、OpenFileDialog、SaveFileDialog,
都位于 PresentationFramework.dll 程序集的 Microsoft.Win32 命名空间中。
WPF 内置控件的数量比 Windows 窗体的要稍少一些(例如没有用于数字调节的
NumericUpDown 控件,似 MFC 中翻滚控件 Spin Control),但是我们却可以用 XAML 来
很容易地实现这些缺失的控件,而且还可以定义自己的用户控件。
下图是 WPF 工具箱中的控件(按英文名称的字母顺序排列),上面是 13 种常用的通
用控件,下面是所有的 WPF 控件(共有 41 种,其中包含 13 种通用控件):
1
与 MFC 的对话框和 C# 的窗体编程类似,WPF 控件也可以被托放到 XAML 可视化设
计器上进行交互式编辑,并可通过属性窗口进行各种配置。你可以通过属性窗口事件页的
Click 等项,来为控件添加事件响应。参见下图:
你还可以通过按 F1 键,获取当前控件的帮助信息。也可以从“目录 \.NET 开发\.NET
2
Framework SDK\.NET Framework 3.5\Windows Presentation Foundation\控件”中获取各类相关
帮助。参见下图:
13.1.2 使用 XAML 声明控件
WPF 从根本上改变了我们对控件的看法,我们不但可以通过标记来有选择的表现控件
的外观,而且许多控件(特别是派生于 ContentControl 的控件)还可以包含任何期望的内
容。在 WPF 中,程序员可以摆脱标准控件传统样式的束缚,通过代码可以很容易地创建自
定义的控件,如以圆形图片呈现的按钮。
1.自定义按钮例
我 们 创 建 一 个 名 为 CtrlView 的 Visual C# WPF 项 目 , 并 将 主 窗 口 类 名 改 为
3
MainWindow(参见 12.6.2),将标题属性( Title)改为“控件观察”。
下面的 XAML 标记段将一个标签控件(Label)和包含三个扩展器控件(Expander,一
种可折叠的分组框,会在后面的 13.1.6 中介绍)的堆栈面板控件(StackPanel)添加到自定
义按钮控件(Button)的隐式内容中:
<!-- 具有内置选择项的自定义按钮! -->
<Button Name="btnPurchaseOptions" Height="100" Width="200">
<StackPanel>
<Label Name="lblInstructions" Foreground="DarkGreen" Content="选择你
的选项,按下提交"/>
<StackPanel Orientation = "Horizontal">
<Expander Name="colorExpander" Header="颜色">
<!-- 设想若干选项放置于此… -->
</Expander>
<Expander Name="makeExpander" Header="厂商">
<!-- 设想若干选项放置于此… -->
</Expander>
<Expander Name="paymentExpander" Header="付款安排">
<!-- 设想若干选项放置于此… -->
</Expander>
</StackPanel>
</StackPanel>
</Button>
将此 Button 元素,放置在(自动生成的 XAML 初始代码的)Window 元素的 Grid 子元素内。
编译运行的结果如下图左所示:
如果要在窗体编程中实现同样的功能,则需要从 Button 派生自己的类,还得用手工来
处理图形内容的显示、更新内部控件集、及重写各种事件处理程序等等。
4
2.C# 代码与控件标记交互
除了用控件元素的属性来设置控件的各种参数外,也可以通过 C# 代码来设置。因为,
在 XAML 定义中包含 Name 属性的控件,会在编译时自动生成的*.g.cs 文件中,自动定义
对应控件类型的成员变量:
namespace CtrlView {
/// <summary>
/// MainWindow
/// </summary>
public partial class MainWindow : System.Windows.Window,
System.Windows.Markup.IComponentConnector {
internal System.Windows.Controls.Button btnPurchaseOptions;
internal System.Windows.Controls.Label lblInstructions;
internal System.Windows.Controls.Expander colorExpander;
internal System.Windows.Controls.Expander makeExpander;
internal System.Windows.Controls.Expander paymentExpander;
……
}
}
通过这些成员变量,我们可以在 C# 代码中,动态设置控件的各种属性。例如在(对
应代码隐藏文件*.xaml.cs 中)主窗口类的构造函数内,修改标签控件的字体大小:(结果
见上图右)
namespace CtrlView
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// 改变标签的字体大小
lblInstructions.FontSize = 14;
}
}
}
怎样在 XAML 文档中,为控件事件添加事件处理方法,已经在 12.6.3 小节的末尾处介
绍过了。只要我们为控件添加事件属性(如 Click),则利用 WPF 设计器的自动感知功能,
可在对应的*.xaml.cs 中自动添加名为“元素的 Name 属性值_事件名”的事件处理方法。例如:
5
剩余63页未读,继续阅读
资源评论
- x_Thief2022-05-04没啥好看的 还不如一个博客
- pandaone2013-11-30很好的资料
zcjer423
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功