WPF XAML_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > WPF XAML

WPF XAML

 2014/9/11 23:00:28  哨兵  程序员俱乐部  我要评论(0)
  • 摘要:xmlns在xml中专门用于声明名字控件,xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"是WPF的核心名字空间,它包含所有WPF类,包括用于构建用户界面的控件xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"是XAML名字空间,包含各种XAML实用特性,之后会有x:Class,x:Name等
  • 标签:
  1. xmlns 在xml中专门用于声明名字控件,
    • xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 是WPF的核心名字空间,它包含所有WPF类,包括用于构建用户界面的控件
    • xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 是XAML名字空间,包含各种XAML实用特性,之后会有x:Class ,x:Name等 ,x就表示这个命名空
  2. XAML名字空间中的Class 告诉XAML编译器生成一个新Applicaion类(Partial类)用于事件处理,我们可以提供Class的Partial类的其他实现,x名字空间的主要内容如下:
    • attribute类:
      x:Class:告诉窗口编译成类,如上
      x:ClassModifier:编译成的类的访问权限,public,internal,private等
      x:Name:编译成类的属性
      x:FieldModifier:修饰属性的访问权限
      x:key:用于检索资源的key
      x:Shared:声明资源是否共享,与x:key配合使用
    • 标签扩展类:
      x:Array :数组标签类型
      x:Static:表示静态成员
      x:Type:表示类型
      x:nul:
  3. InitializeComponent():由编译器自动生成,功能是调用System.Windows.Application类的LoadComponent()方法从程序集中提取BAML(编译过的XAML),并使用它构建用户界面
  4. 在代码中要操作控件,则控件必须包含XAML Name属性,这样XAML编译器会自动生成以Name命名的对象,前提是使用RuntimeNameProperty标签修饰了类,由于FramworkElement类使用了RuntimeNameProperty修饰了所以继承自它的控件都可以这样使用

  5. 复杂属性的设置,以设置Grid的Background为例,如果想使用其他画刷设置Background,可以通过如下方式添加其他标签来实例化特定的类
         
      <Grid Name="grid1"> 
            <Grid.Background>
            <LinearGradientBrush>    
            </LinearGradienBrush>
            </Grid.Background>
            </Grid>
  6. 标记扩展:可以使属性值绑定到一个动态变化的量,所有标记扩展类都继承自System.Windows.Markup.MarkupExtension基类,例如:
          
    <Button ... Foreground>="{x:Static SystemColors.ActiveCaptionBrush}">,
    与button.Foreground=SysemColors.ActiveCaptionBrush 作用相同,其中Static是StaticExtension类的缩写,在引用扩展类时可以省略Extension
    • x:Type 为变量提供Type对象, 即等号左边是Type类型
    • x:Static 生成静态值
    • x:Null 将null指定为属性的值
  7. 附加属性,通常用于控件布局
  8. Xaml让父元素决定如何处理嵌套的子元素,算法如下:
    • 父元素继承自IList,则解析器调用IList.Add 添加子元素
    • 父元素继承自IDictionary,则解析器调用IDictionary.Add方法添加子元素,当使用字典集合时,还必须设置x:Key特性为每个item指定一个键名
    • 父元素使用了ContentProperty特性进行修饰,则解析器使用Children.Add 添加子元素

  9. Xaml中引用其他名字空间:
    xmlns:prefix="clr-namespace:Namespace;assembly=AssemblyName"
    prefix是名字空间的简称,例如x是xmla名字空间的简称,可以在xmla中使用
  10. Xaml可以不随项目一起编译,项目中可以XamlReader读取xaml, 并用LogicalTreeHelper.FindLogicalNode或者FrameWorkElement.FindName方法获取对象
  • 相关文章
发表评论
用户名: 匿名