Windows Presentation Foundation (WPF) 中的大部分类都从四个类派生而来 这四个类在 SDK 文档中常常被称为基元素类 这些类包括 UIElement FrameworkElement ContentElement 和 FrameworkContentElement DependencyObject 也是一个相关类 因为它是 UIElement 和 ContentElement 的通用基类
WPF 类中的基元素 APIUIElement 和 ContentElement 都是从 DependencyObject 派生而来 但途径略有不同 此级别上的拆分涉及到 UIElement 或 ContentElement 如何在用户界面上使用 以神汪及它们在应用程序起到什么作用 UIElement 在其类层次结构中也有 Visual 该类为 Windows Presentation Foundation (WPF) 公开较低级别的图形支持 Visual 通过定义独立的矩形屏幕区域来提供呈现框架 实际上 UIElement 适用于支持大型数据模型的元素 这些元素用于在可以称为矩形屏幕区域的区域内进行呈现和布局 在该区域内 内容模型特意设置得更加开放 以允许不同的元素进行组合 ContentElement 不是从 Visual 派生的 它的模型由其他对象(例如 阅读器或查看器 用来解释元素并生成完整的 Visual 供 Windows Presentation Foundation (WPF) 使用)来使用 ContentElement 某些 UIElement 类可用作内容宿主 它们为一个或多个 ContentElement 类(如 DocumentViewer)提供宿主和呈现 ContentElement 用作以下元素的基类 所具有的对象模型较小 并且多用于寻址可能宿主在 UIElement 中的文本 信息或文档内容
框架级和核心级UIElement 用作 FrameworkElement 的基类 ContentElement 用作 FrameworkContentElement 的基类 对于此下一级类 原因是要支持与 WPF 框架级相分离的 WPF 核心级 这种分离还存在于 API 如何在 PresentationCore 和 PresentationFramework 程序集之间进行划分 WPF 框架级为基本应用程序需要提供了一个更完整的解决方案 包括用于表示的布局管理器的实现 WPF 核心级提供了一种方法 以充分利用 WPF 而又不枣瞎冲至于产生附加程序集开销 对于大多数典型的应用程序开发方案而言 这些级别之间的区别很少有影响 而且一般情况下应将 WPF API 视为一个整体 而无需担心 WPF 框架级与 WPF 核心级之间有何区别 如果您的应用程序设计选择替换大量 WPF 框架级功能 例如 如果您的整体解决方案已经有其自己的用户界面 (UI) 组合和布局实现 则可能需要了解级别之间的差异
选择从哪个元素派生创建用于扩展 WPF 的自定义类的最实用方法是从某个 WPF 类中派生 这样您可以通过现有的类层次结构获得尽可能多的所需功能 本节列出了三个最重要的元素类附带的功能 以帮助您决定要从哪凳歼个类进行派生
如果您要实现控件(这的确是从 WPF 类派生的更常见的原因之一) 您可能需要从以下类中派生 实际控件 控件系列基类或至少是 Control 基类
如果您不是创建控件 并且需要从层次结构中较高的类进行派生
则可以参考下列各节的内容 了解每个基元素类定义了哪些特征
如果您创建从 DependencyObject 派生的类 则将继承以下功能
GetValue 和 SetValue 支持以及一般的属性系统支持
使用依赖项属性以及作为依赖项属性实现的附加属性的能力
如果您创建从 UIElement 派生的类 则除了能够继承 DependencyObject 提供的功能外 还将继承以下功能
对动画属性值的基本支持
对基本输入事件和命令的支持
可以重写以便为布局系统提供信息的虚方法
如果您创建从 FrameworkElement 派生的类 则除了能够继承 UIElement 提供的功能外 还将继承以下功能
对样式设置和演示图板的支持
对数据绑定的支持
对动态资源引用的支持
对属性值继承以及元数据中有助于向框架服务报告属性的相关情况(如数据绑定 样式或布局的框架实现)的其他标志的支持
逻辑树的概念
对布局系统的实际 WPF 框架级实现的支持 包括 OnPropertyChanged 重写(该重写可以检测到影响布局的属性更改)
如果您创建从 ContentElement 派生的类 则除了能够继承 DependencyObject 提供的功能外 还将继承以下功能
对动画的支持
对基本输入事件和命令的支持
如果您创建从 FrameworkContentElement 派生的类 则除了能够继承 ContentElement 提供的功能外 还将获得以下功能
对样式设置和演示图板的支持
对数据绑定的支持
对动态资源引用的支持
对属性值继承以及元数据中有助于向框架服务报告属性情况(如数据绑定 样式或布局的框架实现)的其他标志的支持
您不会继承对布局系统修改(如 ArrangeOverride)的访问权限 布局系统实现只在 FrameworkElement 上提供 但是 您会继承 OnPropertyChanged 重写(可以检测影响布局的属性更改并将这些更改报告给任何内容宿主)
记录了各种类的内容模型 如果您要找到一个合适的类以便从该类进行派生 其内容模型是一个应该考虑的可能因素
其他基类
DispatcherObjectDispatcherObject 为 WPF 线程模型提供支持 并允许为 WPF 应用程序创建的所有对象与 Dispatcher 相关联 即使您不从 UIElement DependencyObject 或 Visual 派生 也应考虑从 DispatcherObject 派生 以获得此线程模型支持
VisualVisual 实现二维对象在近似矩形的区域中通常需要具有可视化表示的概念 Visual 的实际呈现发生在其他类中(不是独立的) 但是 Visual 类提供了一个由各种级别的呈现处理使用的已知类型 Visual 实现命中测试 但它不公开报告命中测试结果的事件(这些都位于 UIElement 中)
FreezableFreezable 通过在出于性能原因需要不可变对象时提供为对象生成副本的途径 来模拟可变对象的不变性 Freezable 类型为某些图形元素(如几何形状 画笔以及动画)提供了一个通用的基础 值得注意的是 Freezable 不是一个 Visual 当应用 Freezable 以填充另一个对象的属性值时 它包含的属性将变成子属性 而这些子属性可能会影响呈现
AnimatableAnimatable 是一个 Freezable 派生类 它特别添加了动画控件层和某些实用工具成员 从而使当前动画的属性可以与未动画的属性区分开
lishixinzhi/Article/program/ASP/201311/21854这个错误应该 实体框架(entity framework)抛出来的吧,意思不能连哗败接上数据库.
1请检查你的链接字符串用户名密码有物芦物没有写错
2如果你使用WPF直接调罩液用的实体框架 请把链接字符串拷贝到app.config 的<connectionStrings></connectionStrings>节点下
你可以在Blend中做界面的设计,在Visual Studio中作开发,这两个工具配合使用会大大提高拿哗效率的,在这两个消灶行工具中都可以创建WPF程序,在Blend中包含一辩亮些自带的WPF Demo示例,你可以创建那些Demo的副本,看一下WPF程序的创建过程欢迎分享,转载请注明来源:内存溢出
评论列表(0条)