`

浅谈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 24小时自学教程 Teach.Yourself.WPF.in.24.Hour

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

    WPF-JJDown-v1.234.0

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

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

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

    wpfx.org-Notepad.rar

    wpfx.org-Notepad.rar

    WPF Extended.Wpf.Toolkit 加载界面 Demo

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

    Actipro.WPF.Studio.v11.1.0541

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

    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集成Microsoft.Toolkit.Uwp.Notifications实现系统消息通知.zip

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

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

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

    高清版WPF深入浅出.pdf

    WPF(Windows Presentation Foundation)是微软推出的一种用于构建Windows客户端应用程序的用户界面框架,它属于.NET Framework的一部分,被广泛应用于桌面应用程序、网络应用程序以及移动应用程序的开发中。WPF提供...

    xceed.wpf.toolkit库

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

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

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

    Xceed.Wpf.AvalonDock dll下载

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

    DevExpress.WPF.v19.2.chm.zip

    DevExpress.WPF.v19.2.chm.zip是一个包含DevExpress WPF V19.2英文帮助文档的压缩包,其中的核心文件是"DevExpress.WPF.v19.2.chm",这是一个CHM(Microsoft Compiled HTML Help)格式的文件,通常用于存放软件的...

    DotNetBar.for.WPF.v5.9.0.0 crack

    DotNetBar.for.WPF.v5.9.0.0-AHCU

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

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

    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...

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

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

    Actipro.WPF.Studio.v11.2.0552.Incl.Keygen-Lz0

    Actipro.WPF.Studio.v11.2.0552.Incl.Keygen-Lz0

Global site tag (gtag.js) - Google Analytics