WPF使用其它的命名空间(宝典1)

Xaml是实例化的,net对象的通用方法,包括那些位于非WPF名称空间下的和自己创建的名称空间中的对象

为使用没有在wpf中定义的类,需要将.net名称空间映射到xml名称空间,可以使用这样的一特殊的语法来实现这样的工作

xmlns:prefix="clr-namespace:Namespace;assembly=assemblName"

如System名称空间的类型如下:

xmlns:sys="clr-namespace:System;assembly=mscorlib"

现在可以创建一个名称空间的类的实例,可使用名称空间前缀:

<local:Myobject..></local:Myobject>

tip

请记住,可使用任何想要使用的名称空间前缀,只要在整个xaml文档中保持一致即可,但sys和local前缀通常在导入system名称空间和当前项目的名称空间使用。

理想的情况是,希望在xaml中使用的每个类都有无参构造函数,如果具有无参构造函数,xaml解析器就可创建对应的对象,设置其属性,并关联所提供的任何事件处理程序,xaml不支持有参构造函数

而且wpf中的所有的元素都包含无参构造函数,此外,需要能够使用公共属性设置你所期望的所有的细节xaml不允许设置公共字段或调用方法

如果想要使用的类没有无参构造函数,就有一些限制,如果试图创建简单的基本类型,可提供数据的字符串表示形式作为标签中的内容,xaml解析器接着使用类型转换器将字符串转换为合适的对象如下:

<sys:DateTime>10/20/2016 4:30 PM</sys:DateTime>

因为DateTime类使用TypeConverter特性将自身关联到DateTimeConverter类所以上面的标记可以奏效。DateTimeConverter类知道这个字符串是合法的DateTime对象,并对其进行转换,当使用这种技术时,不能使用特征

为你的对象设置任何属性

如果类没有无参的构造函数,也没有合适的类型转换器,那就不能成功的

解决方法

1/创建自定义的封装器来克服这些限制。但这样的硬编码会使用异常难以定位

2/使用事件处理代码来控制对象,而完全不使用xaml,(就是在后台来实现)

时间: 2025-01-03 16:11:03

WPF使用其它的命名空间(宝典1)的相关文章

WPF中的X命名空间

x是xaml名称空间的简称,映射的是http://schemas.microsoft.com/winfx/2006/xaml. 与C#一样,XAML也有自己独立的编译器.XAML会被解析和编译,最终形成微软的中间语言存储在程序集中.在解析和编译XAML的语言过程中,我们经常需要告诉编译器一些重要的信息,比如XAML代码的编译结果应该与哪个C#代码的编译器合并.使用XAML声明的元素师public还是private访问级别等等.这些让程序员能够与XAML编译器沟通的工具就存在x名称空间中. 在x名

WPF之命名空间

1.参考: https://msdn.microsoft.com/zh-cn/library/ms747086(v=vs.110).aspx 创建一个WPF应用,默认生成代码: 1 <Window x:Class="WpfApplication1.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schem

WPF学习------XAML 语法详述

XAML 语言规范 XAML 语言规范中也定义或引用了此处定义的 XAML 语法术语. XAML 是一种基于 XML 并遵循或扩展 XML 结构规则的语言. 其中某些术语共享自或基于描述 XML 语言或 XML 文档对象模型时常用的术语. 有关 XAML 语言规范的更多信息,请从 Microsoft 下载中心下载 [MS-XAML]. XAML 和 CLR XAML 是一种标记语言. 顾名思义,公共语言运行时 (CLR) 实现了运行时执行. XAML 本身并非 CLR 运行时直接使用的一种公共语

WPF编程宝典之依赖项属性(八)

依赖项属性是专门针对WPF创建的,但WPF库中的依赖项属性都使用普通的.NET属性过程(property procedure)进行了封装. 1.定义依赖项属性 注:只能为依赖对象(继承自DependencyObject的类)添加依赖项属性.幸运的是,WPF基础结构的关键部分中的大部分都间接继承自DependencyObject类,最明显的例子就是元素. 依赖项属性需要在多个类之间共享信息,所以必须将DependencyProperty对象定义为与其相关联的类的静态字段.并且按照约定,依赖项属性的

WPF编程宝典之控件模版(七)

将控件模版定义为资源,并使用StaticResource引用该资源 1 <Button Margin="10" Padding="5" Template="{StaticResource ButtonTemplaate}"> 2 A Simple Button with a Custom Template</Button> 控件模版的基本框架如下: 1 <Window.Resource> 2 <Contr

WPF基础学习笔记整理 (三) x命名空间

“x命名空间”中x是XAML的首字母,用来引导XAML编译器把XAML代码编译成CLR代码.下边的图片表格列举了该命名空间部分成员及其作用,更多请见URL:https://msdn.microsoft.com/zh-cn/library/ee792007(v=vs.110).aspx. 图1 部分x命名空间成员及其作用

WPF编程宝典之路由事件(一)

路由事件是更具有传播能力的事件--它们可在元素树中向上冒泡和向下隧道传播,并且沿着传播路径被事件处理程序处理. 可通过传统的方式使用路由事件--通过关联具有正确签名的事件处理程序. 1.定义.注册和封装路由事件 与依赖项属性一样,路由事件由只读的静态字段表示,在静态构造函数中注册,并通过标准的.net事件定义进行封装. 1 public abstract class ButtonBase : ContentControl 2 { 3 //定义事件 4 public static readonly

WPF基础篇----命名空间

WPF中XAML与C#一样,也有自己独立的编译器.XAML会被解析和编译,最终形成微软的中间语言存储在程序集中.在解析和编译XAML的语言过程中,我们经常需要告诉编译器一些重要的信息,比如XAML代码的编译结果应该与哪个C#代码的编译器合并.使用XAML声明的元素师public还是private访问级别等等.这些让程序员能够与XAML编译器沟通的工具就存在x名称空间中. 在x名称空间下包含三种类型的工具: 一.Attribute类型的工具 二.标签扩展类型的工具 三.XAML指令元素类型的工具

WPF: 未能找到类型或命名空间名称“ICommand”(是否缺少 using 指令或程序集引用?)

对于一个新建的类库项目, 要先添加"WindowsBase"引用, 才能对引用ICommand所在的命名空间:System.Windows.Input. 但是, 之后你会发现,VS提示错误:"未能找到类型或命名空间名称"ICommand"(是否缺少 using 指令或程序集引用?)". 解决方法: 添加PresentaitionCore.dll引用.