码迷,mamicode.com
首页 > 其他好文 > 详细

一,XAML基础

时间:2014-07-18 10:02:22      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   strong   

  1. RuntimeNameProperty特性:为什么<Grid x:Name="grid1"></Grid>等价于<Grid Name="grid1"></Grid>,是因为Grid类使用RuntimeNameProperty特性进行了修饰,  RuntimeNameProperty特性指示哪个属性的值将被做为该类型的实例的名称。
  2. WPF的类型转换器:XAML解析器通过以下的两个方法查找类型转换器,如果找不到,XAML解析器就会生成一个错误。
    1)  检查属性申明,查找TypeConverter特性,如果提供了TypeConverter特性,该特性将指定哪个类可以执行转换。
    2)  如果属性申明中没有TypeConverter特性,XAML解析器将检查对应数据类型的类申明。
  3. XAML是大小写敏感的,所以不能使用<button>代替<Button>,但类型转换器通过不是大小写敏感的,这意味着 Foreground="White" 和 "Foreground="white"具有相同的效果。
  4. 标记扩展:所有标记扩展都继承自System.Windows.Markup.MarkupExtension基类,它提供了一个简单的ProvideValue()方法,该方法获取所期望的数值。StaticExtension标记扩展,它允许引用另一个类中的静态属性:<Button Foreground="{x:Static SystemColors.ActiveCaptionBrush}">
    因为标记扩展映射为类,所以它们也可以被用作嵌套属性,如:
          <Button>
                  <Button.Foreground>
                                <x:Static Member="SystemColors.ActiveCaptionBrush"></x:Static>
                  </Button.Foreground>
          </Button>
    NullExtension:它代表一个null值。
    TypeExtension:该扩展构造一个表示.Net类型的对象。
  5. 附加属性:它是可以用在多个控件但是在另一个类中定义的属性。它根本不是一个真正的属性,它们实际上被转换为方法调用,XAML解析器以DefiningType.SetPropertyName()的形式调用静态方法。
  6. 如果为元素设置特性:xml:space="preserve",元素内所有空白字符将被保留。<TextBox xml:space="preserve"> jiaoyanq  ing</TextBox>
  7. 在XAML中引用非WPF名称空间中的类,需要把.net名称空间映射到一个XML名称空间:xmlns:Prefix="clr-namespace:Namespace;assembly=AssemblyName",可以使用任何想要使用的名称空间前缀Prefix,只要在整个XAML文档中保持一致即可,但是,sys和local前缀通常在导入System名称空间和当前项目名称空间时使用。
  8. 使用XamlReader类解析XAML,在以下的代码示例中,向Window中加载了一个DockPanel对象,同样可以加载整个XAML窗口,在这种情况下,必须将XamlReader.Load()方法返回的对象转换为Window类型,然后为了显示加载的窗口调用它的Show()方法或ShowDialog()方法。
    bubuko.com,布布扣
     1     public partial class MainWindow : Window
     2     {
     3         private Button button1;
     4 
     5         public MainWindow()
     6         {
     7             InitializeComponent();
     8         }
     9 
    10         public MainWindow(string xamlFile)
    11         {
    12             this.Width = this.Height = 285;
    13             this.Left = this.Top = 100;
    14             this.Title = "Dynamically Loaded XAML";
    15             DependencyObject rootElement;
    16             using (FileStream fs = new FileStream(xamlFile, FileMode.Open))
    17             {
    18                 rootElement = (DependencyObject)XamlReader.Load(fs);
    19                 this.Content = rootElement;
    20             }
    21             //注释中是另一种替代方法:
    22             //FrameworkElement frameworkElement = (FrameworkElement)rootElement;
    23             //button1 = (Button)frameworkElement.FindName("button1");
    24             button1 = (Button)LogicalTreeHelper.FindLogicalNode(rootElement, "button1");
    25             button1.Click += new RoutedEventHandler(button1_Click);
    26         }
    27 
    28         private void button1_Click(object sender, RoutedEventArgs e)
    29         {
    30             button1.Content = "Thank you";
    31         }
    32     }
    View Code

     

一,XAML基础,布布扣,bubuko.com

一,XAML基础

标签:style   blog   http   color   使用   strong   

原文地址:http://www.cnblogs.com/jiao1855/p/3852352.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!