NET WPF之XAML语言

2024-02-28  本文已影响0人  AC编程

一、XAML 的根元素

通常XAML的根元素有两个:一个是Window,说明这是一个桌面应用程序;另一个是Page,主要用在互联网应用程序,也就是网页。

1.1 XAML桌面应用程序
<Window x:Class="WPFTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d" 
        Height="300" Width="600" Background="FF4B4A4A"
        Title="XAML桌面应用程序">
    <Border>
    </Border>
</Window>
1.2 XAML网页应用程序
<Page x:Class="WPFTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Height="300" Width="600" Background="FF4B4A4A"
        Title="XAML网页应用程序">
    <Border>
    </Border>
</Page>

二者区别只是根元素不同

二、XAML 和代码分离技术

WPF 应用程序一般由两部分组成,一部分是 XMAL 描述 UI 元素在界面上的位置,大小等,另一部分用来处理程序的逻辑、对传递事件的反应等等。一个是.xmal文件,另一个是.cs文件。

三、相关属性 & 附加属性

3.1 相关属性的概念

XAML 中元素的属性大部分为相关属性,例如:

 <TextBox Text="相关属性"/>
  <TextBox>
        <TextBox.Text>相关属性</TextBox.Text>
  </TextBox>

这里面的Text就是TextBox的相关属性。

3.2 附加属性的概念

例如:

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="70"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="80"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <TexBox Grid.Row="0" Grid.Column="0"/>
        <Button Grid.Row="1" Grid.Column="1"/>
</Grid>

Grid 中的 Column 和 Row 都是附加属性。Grid中的控件在说明其位置时,直接设置该附加属性。写法如上面的 XAML ,TextBox和 Button 并不含有 Grid.Row 或 Grid.Column 属性,却可以很方便地应用 Grid 中的附加属性。

四、XAML 标记扩展

在 XAML 里引用静态或者动态对象实例,或在 XAML 中创建带有参数的类,需要用到 XAML 扩展,扩展常用来设定属性值。

标记扩展本身是一系列类,其基类为 MarkupExtension,这是一个抽象类。从这个类中派生出十二个类:

ResourseKey、BindingBase、StaticResourceExtension、RelativeSourse、TemplateBindingExtension、DynamicResourceExtension、ColorConvertedBitmapExtension、ThemeDictionaryExtension、StaticExtension
、TypeExtension、ArrayExtension、NullExtension

这些标记扩张可分为两大类:

在语法上,XAML使用大括号"{ }"来表示扩展。

必要时,你也可以使用自己的扩展,其方法是从 MarkupExtension 中派生出你自己的标记扩展类,并覆盖基类中的 ProvideValue 方法。

转载自:【C# .NET】WPF (一) XAML语言

上一篇下一篇

猜你喜欢

热点阅读