`

浅谈WPF中x名称空间(二) .

 
阅读更多

二、x名称空间中的标记扩展

   标记扩展(Markup Extension)实际上就是一些MarkupExtension类直接或者间接的派生类,在x名称空间中就存在这样一些类,所以常称它们为x名称空间内的标记扩展。

下面我们来看一下常用的标记扩展吧!

1、x:Type 从字面上开,x:Type的值应该是一个数据类型的名称。一般情况下,我们在编程中操作的是数据类型的实例或者是实例的引用,但是有时候我们也会用到数据类型本身。下面我们还是来看一个例子吧!

     首先创建一个Button的派生类:

 class MyButton:Button

    {

           public Type UserWindowType {get; set; }

           protected override void OnClick(

          {

                 base.OnClick();

                 Window win = Activator.CreateInstance(this.UserWindowType) as Window;

                 if(win != null)

                        win.ShowDialog();

          }

 

在该类中存在一个Type类型的属性,即UserWindowType,此时你需要将一种数据类型当做值赋给它。同时在该类中重写了父类的OnClick方法,此时可以像父类那样激活Click时间,还会创建UserWindowType所存储类型的一个实例。

<Window x:Class="WpfApplication.Window1"

                  xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation

                  xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml

                  Title="Window1" Width="200" Height="170">

                  <StackPanel Background="LightBlue">

                                  <TextBox />

                                  <TextBox />

                                  <Button Content="确认" />

                  </StackPanel>

 </Window>

 

此时,我们将自定义按钮添加到窗口中,并且把Window1作为数据类型复制给自定义按钮的UserWindowType属性。

<Window x:Class="WpfApplication.Window2"

                  xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation

                  xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml

                  Title="Window2" Width="300" Height="300">

                  <StackPanel>

                            <local:MyButton Content="Show" UserWindowType="{x:Type TypeName=local:Window1}" />

                  </StackPanel>

 </Window>

 

这就是x:Type的用法了!

2、x:Null 该标记扩展的作用是将一个空值显示的赋给一个属性。我们知道在C#中用null表示空值,那么在xaml中就用x:Null表示空值了。同样让我们来看一个例子:

<Window.Resource>

<Style TargetType="Button">

        <Setter Property="Background" Value="LightBlue" />

</Style>

</Window.Resource>

<StackPanel>

<Button Content="Button1" />

<Button Content="Button2" />

<Button Content="Button3"/>

<Button Content="Button4" Style="{x:Null}" />

</StackPanel>

 

以上代码的运行效果是,前三个Button的背景色均为浅蓝色,而最后一个button为默认颜色。知道x:Null的用法了吧!

3、x:Array 该Attribute的作用就是通过它的Items属性向使用者报了一个类型已知的ArrayList实例,ArrayList内成员的类型有x:Array的Type指明。下面我们一个例子来说明吧!

<ListBox>

<ListBox.ItemsSource>

<x:Array Type="sys:String">

<sys:String>1</sys:String>

<sys:String>2</sys:String>

<sys:String>3</sys:String>

</x:Array>

</ListBox.ItemsSource>

</ListBox>

运行程序,你就知道效果了!

4、x:Static 是一个很常用的标记扩展,它的主要作用是使用数据类型中的Static成员。主要用于程序的国际化支持了。同样用例子说话:

public class Chinese

{

      public static string btnSure = "确认";

}

public class English

{

     public static string btnSure = "OK";

}

  

根据选择不同的语言,使其展现内容的语言不同

<Button Content="{x:Static ocal:Chinese.btnSure}"

 

三、XAML指令元素

x:Code 主要用于在xaml中写入C#代码

分享到:
评论

相关推荐

    WPF-JJDown-v1.234.0

    【压缩包子文件的文件名称列表】中仅有 "[WPF]JJDown" 这一项,这意味着压缩包内包含的是WPF应用程序的主体部分,可能包括可执行文件、资源文件、配置文件等。用户解压后,很可能是直接运行这个文件来启动JJDown应用...

    WPF 24小时自学教程 Teach.Yourself.WPF.in.24.Hour

    WPF 24小时自学教程 Teach.Yourself.WPF.in.24.Hour

    WPF远程桌面AxInterop.MSTSCLib.dll Interop.MSTSCLib.dll 一个demo

    在本文中,我们将深入探讨如何在Windows Presentation Foundation (WPF) 应用程序中实现远程桌面功能,重点是使用AxInterop.MSTSCLib.dll和Interop.MSTSCLib.dll这两个组件。这两个组件是Microsoft Terminal ...

    Actipro.WPF.Studio.v11.1.0541

    [专业WPF用户界面控件].Actipro.WPF.Studio.v11.1.0541.Incl.Keygen-Lz0 激活码!!!!!!!!!!!!

    WPF Extended.Wpf.Toolkit 加载界面 Demo

    **WPF Extended.Wpf.Toolkit加载界面Demo** WPF(Windows Presentation Foundation)是.NET框架的一部分,用于构建具有丰富图形、多媒体和数据绑定功能的桌面应用程序。在开发WPF应用时,我们常常需要为用户提供一...

    WPF基于Vlc.DotNet.Wpf封装的视频播放器

    在本文中,我们将深入探讨如何使用WPF(Windows Presentation Foundation)和Vlc.DotNet.Wpf库来封装一个自定义的视频播放器。WPF是.NET Framework中的一个UI框架,提供了丰富的图形渲染和用户交互能力。而Vlc....

    WPF深入浅出(高清.书签)

    《WPF深入浅出》是一本专注于Windows Presentation Foundation(WPF)技术的书籍,由国内作者撰写,确保了内容的准确性和本地化适应性。WPF是微软.NET Framework中的一个关键组件,它提供了构建富客户端应用程序的...

    WPF.Themes经典的wpf主题样式,包含22种不同样式,一行代码即可改变全部窗体的样式。

    WPF.Themes.ThemeManager.ApplyTheme(Application.Current, Properties.Settings.Default.Themes);//读取设置界面主题配置信息 即可使所有常用的控件主题变成所选择的主题,无需在每个窗体里修改样式。 减少了很...

    WPF集成Microsoft.Toolkit.Uwp.Notifications实现系统消息通知.zip

    C#、WPF使用技巧,实战应用开发小系统参考资料,源码参考。经测试可运行。 详细介绍了一些WPF框架的各种功能和模块,以及如何使用WPF进行GUI开发、网络编程和跨平台应用开发等。 适用于初学者和有经验的开发者,能够...

    xceed.wpf.toolkit库

    **Xceed.WPF.Toolkit库详解** Xceed.WPF.Toolkit是一个强大的WPF(Windows Presentation Foundation)扩展库,由Xceed Software公司开发。这个库为开发者提供了许多预构建的UI控件和功能,使得在构建现代、美观且...

    wpfx.org-Notepad.rar

    wpfx.org-Notepad.rar

    LoadingIndicators.WPF, WPF加载指示器的集合.zip

    LoadingIndicators.WPF, WPF加载指示器的集合 LoadingIndicators.WPF LoadingIndicators.WPF 是 8个用于WPF的动画加载指示器,与 MahApps.Metro 兼容。样式弧线弧形环双弹跳FlipPlane脉冲响铃三点

    WPF HelixToolkitWPF 中文手册 HelixToolkitWPF中文手册.pdf

    WPF HelixToolkitWPF 中文手册 HelixToolkitWPF中文手册.pdf

    Xceed.Wpf.AvalonDock dll下载

    《Xceed.Wpf.AvalonDock:一个强大的WPF文档管理库》 Xceed.Wpf.AvalonDock是一款专门用于Windows Presentation Foundation (WPF) 应用程序的库,它提供了一种高度可定制和灵活的文档和工具窗口管理解决方案。这个...

    DevExpress9.2完整版

    DevExpress.Wpf.Bars.v9.2.dll.VisualStudio.De DevExpress.Wpf.Bars.v9.2.Expression.Design.d DevExpress.Wpf.Bars.v9.2.VisualStudio.Design DevExpress.Wpf.Bars.v9.2.xml DevExpress.Wpf.Carousel....

    Prism7.1.0.431_WPF_官方中文文档.pdf

    文档中的内容详细介绍了使用Prism进行WPF应用程序开发的各个方面。 首先,文档讲述了为什么要使用Prism,以及在客户应用程序开发中面临的挑战。Prism的综合方法旨在解决这些挑战,尽管如此,它并不是万能的,文档也...

    DotNetBar.for.WPF.v5.9.0.0 crack

    DotNetBar.for.WPF.v5.9.0.0-AHCU

    WPF开发教程 ----WPF C# 编程 界面开发(很不错)

    8. 详谈WPF开发中的数据虚拟化 64 XAML语法 74 1. XAML语法术语 74 2. 代码隐藏和XAML 82 3. XAML和自定义类 83 4. 标记扩展和XAML 87 5. XAML命名空间和命名空间映射 90 6. WPF名称范围 92 WPF控件开发 95 1. WPF...

    gong-wpf-dragdrop, GongSolutions.WPF.DragDrop 库是WPF的拖动'n'拖放框架.zip

    gong-wpf-dragdrop, GongSolutions.WPF.DragDrop 库是WPF的拖动'n'拖放框架 简介GongSolutions.WPF.DragDrop 库是一个易于使用的拖拉'n'拖放框架。特性使用 MVVM: 拖放逻辑可以放在ViewModel中。 代码不需要放在in中...

    Wpf 实现视频拍摄 DirectX.Capture 和AForge

    在本文中,我们将深入探讨如何在WPF应用中实现视频拍摄功能,主要涉及DirectX.Capture和AForge这两个类库。这两个库都是Windows Presentation Foundation (WPF)开发中用于捕获视频和图像的重要工具。 首先,DirectX...

Global site tag (gtag.js) - Google Analytics