美文网首页
NET WPF之XAML语言

NET WPF之XAML语言

作者: AC编程 | 来源:发表于2024-02-28 10:05 被阅读0次

    一、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

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

    • WPF 标记扩展:StaticResource、 DynamicResource、 Binding、 RelativeSource 、 TemplateBinding

    • XAML 标记扩展:x:Type、x:Static、x:nul、 x:Array

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

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

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

    相关文章

      网友评论

          本文标题:NET WPF之XAML语言

          本文链接:https://www.haomeiwen.com/subject/ommzadtx.html