您的位置:

Material Design in XAML 详解

Material Design in XAML 是一款基于 WPF 和 WinUI 应用程序框架的开源 UI 库,该库旨在为开发人员和设计师提供直观易用,符合 Google Material Design 标准的控件、图标、样式等资源。

一、自定义控件

Material Design in XAML 提供了许多常用的控件,如按钮、文本框、菜单等,并且还支持自定义控件。在 WPF/XAML 中,自定义控件需要定义样式和模板。样式用于设置控件的外观,而模板用于定义控件的内部结构。

下面是一个自定义卡片控件的示例:

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
      Background="{DynamicResource MaterialDesignPaper}">
    <Grid.Resources>
        <Style x:Key="CardBorder" TargetType="{x:Type Border}">
            <Setter Property="Background" Value="White"/>
            <Setter Property="CornerRadius" Value="2"/>
            <Setter Property="Padding" Value="8"/>
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="BorderBrush" Value="{DynamicResource MaterialDesignDivider}"/>
        </Style>

        <Style x:Key="Card" TargetType="{x:Type Grid}">
            <Setter Property="Margin" Value="8"/>
            <Setter Property="SnapsToDevicePixels" Value="True"/>
            <Setter Property="Background" Value="White"/>
            <Setter Property="Cursor" Value="Hand"/>
            <Setter Property="HorizontalAlignment" Value="Left"/>
            <Setter Property="VerticalAlignment" Value="Top"/>
            <Setter Property="Height" Value="160"/>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Opacity" Value="0.8"/>
                </Trigger>
                <Trigger Property="IsMouseOver" Value="False">
                    <Setter Property="Opacity" Value="1"/>
                </Trigger>
            </Style.Triggers>
            <Border Style="{StaticResource CardBorder}">
                <ContentPresenter/>
            </Border>
        </Style>
    </Grid.Resources>

    <Grid Style="{StaticResource Card}">
        <!-- 卡片内容 -->
    </Grid>
</Grid>

上面的代码中,通过定义 `Card` 和 `CardBorder` 两个样式来实现自定义卡片控件的效果,并将两个样式合并为一个模板。

二、图标和样式

Material Design in XAML 还提供了丰富的图标和样式资源,可用于美化应用程序的外观。其中,图标库包含近 2000 个 SVG 和 PNG 格式的矢量图标,而样式库则包含了一系列颜色、字体、排版等样式资源。

下面是一个使用 Material Design in XAML 样式的文本框控件示例:

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
      Background="{DynamicResource MaterialDesignPaper}">

    <StackPanel Margin="16">
        <materialDesign:TextBox Hint="请输入用户名"/>
        <materialDesign:TextBox Hint="请输入密码" Style="{StaticResource MaterialDesignOutlinedTextBox}"/>
        <materialDesign:TextBox Hint="请再次输入密码" Style="{StaticResource MaterialDesignOutlinedTextBox}" Margin="0 8 0 0"/>
    </StackPanel>
</Grid>

在上面的代码中,我们使用了 `MaterialDesignOutlinedTextBox` 样式,来实现文本框控件的外观和样式。该样式可通过 `Style` 属性应用于文本框控件中。

三、动画效果

Material Design in XAML 还支持多种动画效果,如水波纹效果、连续动画效果等。这些动画效果可使应用程序更生动、更有趣味性。

下面是一个带有水波纹效果的按钮控件示例:

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
      Background="{DynamicResource MaterialDesignPaper}">

    <materialDesign:FlatButton Content="提交" Padding="16" Width="120" Height="40"
                                Background="{DynamicResource MaterialDesignPrimary}"
                                Click="{Binding SubmitButtonClick}">
        <materialDesign:Interaction.Triggers>
            <materialDesign:RippleEffect/>
        </materialDesign:Interaction.Triggers>
    </materialDesign:FlatButton>
</Grid>

在上面的代码中,我们使用了 `RippleEffect` 水波纹效果,使得按钮在点击时会出现一个类似水波纹的动画效果。

四、总结

Material Design in XAML 是一款优秀的 UI 库,它提供了丰富的控件、图标、样式和动画效果,可以帮助开发人员和设计师快速创建符合 Material Design 标准的应用程序。

Material Design in XAML 详解

2023-05-17
深入探究Material Design

2023-05-19
Android Material Design规范:提升应用

Android Material Design 是 Google 在 2014 年 I/O 大会上推出的设计规范,旨在为 Android 应用程序提供一致的外观和感觉。通过 Material Desi

2023-12-08
提升应用美观度的秘诀——Android Material D

一、什么是Android Material Design Android Material Design是Google推出的一套全新的UI设计语言。它借鉴了现实物品并运用了高级视觉效果,使人可以获得更

2023-12-08
Vue Material——一个基于Vue.js的UI组件库

2023-05-18
发篇java复习笔记(java课程笔记)

2022-11-09
提高应用用户体验的Android Material设计语言

2023-05-14
java方法整理笔记(java总结)

2022-11-08
python基础学习整理笔记,Python课堂笔记

2022-11-21
印象笔记记录java学习(Java成长笔记)

2022-11-12
详解Material Theme

2023-05-19
java客户端学习笔记(java开发笔记)

2022-11-14
了解最流行的CSS颜色代码

2023-05-12
java学习笔记(java初学笔记)

2022-11-14
CollapsingToolbarLayout详解

2023-05-20
Android 12:全球首款采用Material You设

一、Material You是什么? Material You是Google于2021年Google I/O大会上发布的一项全新设计语言,旨在将个性化和自定义融入到操作系统设计中。 Material

2023-12-08
我的python笔记06(Python)

2022-11-14
python学习之笔记(python的笔记)

2022-11-10
java包笔记,Java语言包

2022-11-18
WPFsvg何以成为XAML开发的神器

2023-05-19