WPF 和 Avalonia 开发者的 html css 前端指南 Border 篇

WPF 和 Avalonia 开发者的 html css 前端指南 Border 篇

笔者前端框架使用的是 Vue3 + Deno。
笔者主要会以 Avalonia 作为 C# 技术部分的示例。
本文主要是向大家列出 WPF 和 Avalonia 的 Border 在 html 和 css 的实现方法。
你其实也完全可以使用纯原生的 html + css,或者是 React、Blazor 等等框架来实现,因为本质是 html + css。

一、关于 Border 我们会介绍什么

在 WPF 和 Avalonia 中,Border 是自定义控件中最为重要的内容,不论是颜色、边框还是阴影,在制作卡片也好、呈现图像也好,甚至是制作分割线的方面,Border 始终是 UI 呈现的主力。

我们将会从以下一些方面来介绍 Border 相关你感兴趣的内容:

  1. 尺寸与对齐
  2. 边距
  3. 填充
  4. 边框的颜色与粗细
  5. 圆角
  6. 阴影
  7. 可见性
  8. 不透明度

二、Width Height HorizontalAlignment VerticalAlignment 相关的信息

在上一期关于 Grid 的介绍中,我们其实有对 Grid 的 WidthHeightHorizontalAlignmentVerticalAlignment 列出过转换的方式,在这里我们会稍微提一下。

注意,我们在这里列出的 css 相关是结合 grid 布局的,你在其它布局下不一定能够生效,还请注意。

WPF 和 Avalonia html + css 备注
Width width 可以提供像素值(带单位),如 80px
Height height 可以提供像素值(带单位),如 80px
HorizontalAlignment="Left" justify-self: self-start 在 grid 布局下的样子,水平、左对齐
HorizontalAlignment="Right" justify-self: self-end 在 grid 布局下的样子,水平、右对齐
HorizontalAlignment="Center" justify-self: center 在 grid 布局下的样子,水平、居中
VerticalAlignment="Top" align-self: self-start 在 grid 布局下的样子,竖直、顶对齐
VerticalAlignment="Bottom" align-self: self-end 在 grid 布局下的样子,竖直、底对齐
VerticalAlignment="Center" align-self: center 在 grid 布局下的样子,竖直、居中
VerticalAlignment="Stretch" align-self: stretch 在 grid 布局下的样子,水平、拉伸
VerticalAlignment="Stretch" align-self: stretch 在 grid 布局下的样子,竖直、拉伸

我们在文末也提供了一个更加完整的,描述了本文全部涉及到的属性的一个表,它对你或许更有帮助!

我们提供了一个 Avalonia 的示例(WPF 也兼容)

这是效果图片:

代码如下:

<Grid
    Width="300"
    Height="300"
    Background="Aqua">

    <Border
        Width="100"
        Height="50"
        HorizontalAlignment="Left"
        VerticalAlignment="Bottom"
        Background="Yellow" />
</Grid>

对应的 html css 效果是这样的:

一模一样吧!如果一样,就是我们的目的了。

<template>
  <div class="grid-container">
    <div class="border"></div>
  </div>
</template>

<style lang="css" scoped>
  .grid-container {
    display: grid;
    background-color: aqua;
    width: 300px;
    height: 300px;
  }

  .border {
    align-self: self-end;
    justify-self: self-start;
    background-color: yellow;
    width: 100px;
    height: 50px;
  }
</style>

三、Margin 边距

1. 普通的边距

WPF 和 Avalonia 使用 Margin 属性(数据类型是 Thickness)来描述控件的边距。
在 css 的部分当然也是有的。

我们先来看一下 WPF 和 Avalonia 中的 Margin 的效果。

这是一个边距为 5 的 Border 在 Grid 中自适应尺寸后的效果:

<Grid
    Width="300"
    Height="300"
    Background="Aqua">

    <Border
        Margin="5"
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch"
        Background="Yellow" />
</Grid>

在 css 中,我们可以使用这样的写法来实现:

对应的 css 代码请看这里:

<template>
  <div class="grid-container">
    <div class="border"></div>
  </div>
</template>

<style lang="css" scoped>
  .grid-container {
    display: grid;
    background-color: aqua;
    width: 300px;
    height: 300px;
  }

  .border {
    align-self: stretch;
    justify-self: stretch;
    background-color: yellow;
    margin: 5px;
  }
</style>

2. Margin 和 margin 的注意事项

边距是可以自定义某个方向的边距是多少的,其中:

  1. WPF 和 Avalonia 的 Margin 传入的格式是 "左,上,右,下"
  2. css 的 margin 的传入格式是 "上 右 下 左"(记得带 px 单位!)
  3. css 中存在 margin-topmargin-rightmargin-leftmargin-bottom对 margin 进行单独的配置,而不使用 margin 本身。这种方式会在进行一些动画效果的地方发挥重大的作用,但是本文不会向你展示示例,还请你另外找资料。

下面是示例图:

对应的 WPF 和 Avalonia 代码:

<Grid
    Width="300"
    Height="300"
    Background="Aqua">

    <Border
        Margin="0,10,20,40"
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch"
        Background="Yellow" />
</Grid>

对应的 html css 效果:

<template>
  <div class="grid-container">
    <div class="border"></div>
  </div>
</template>

<style lang="css" scoped>
  .grid-container {
    display: grid;
    background-color: aqua;
    width: 300px;
    height: 300px;
  }

  .border {
    align-self: stretch;
    justify-self: stretch;
    background-color: yellow;
    margin: 10px 20px 30px 0px;
  }
</style>

四、Background 背景填充

为了让你就算拼错也能 Ctrl F 到,我们也会把错误的拼写放在这里:
backgroud、backgound、backgournd、fill

在 WPF 和 Avalonia 中,背景颜色 Background 的使用方式可以看下面的示例:

Background="Yellow" 的效果:

具体的 WPF 和 Avalonia 代码是这样的:

<Grid Width="300" Height="300">

    <Border
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch"
        Background="Yellow" />

</Grid>

如果你要使用图片,你可以以这样的方式:

对应代码如下:

<Grid Width="300" Height="300">

    <Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <Border.Background>
            <ImageBrush Source="your image url 你的图片路径" Stretch="UniformToFill" />
        </Border.Background>
    </Border>

</Grid>

Background 里面支持填入的东西取决于 Brush 的派生类,"Yellow" 是属于 SolidColorBrush 的类,通过 SolidColorBrush.Parse() 转换而来。

为此我们希望能简短列一下 Background 能够支持的部分 Brush 类型和字面填入的类型(有些内容是 Avalonia 独有的,会特意列出来,其它表示 WPF 和 Avalonia 都有):

  1. SolidColorBrush 纯色名:YellowRed
  2. SolidColorBrush Hex 色值:#66CCFF、包含 Alpha 通道的#9966CCFF
  3. SolidColorBrush RGB(Avalonia 限定)色值:rgb(233,233,233)rgba(233,233,233,120)
  4. GradientBrush 系列:线性渐变 LinearGradientBrush,辐状渐变 RadialGradientBrush
  5. GradientBrush 系列(Avalonia 限定):圆锥渐变 ConicGradientBrush
  6. ImageBrush

辐状渐变、圆锥渐变之类我认为有点小众,应用场景有限,所以在下文不会介绍,我们在下文会分别介绍:

  1. 纯色名
  2. Hex 色值
  3. RGB 色值
  4. 线性渐变
  5. 图片填充

1. SolidColorBrush 纯色名

此处对应 WPF 和 Avalonia 中的以下写法:

1.1 WPF 和 Avalonia 的同类写法·一

Background="Aqua"

1.2 WPF 和 Avalonia 的同类写法·二

<Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
    <Border.Background>Aqua</Border.Background>
</Border>

1.3 WPF 和 Avalonia 的同类写法·三

<Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
    <Border.Background>
        <SolidColorBrush>Aqua</SolidColorBrush>
    </Border.Background>
</Border>

1.4 WPF 和 Avalonia 的同类写法·四

<Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
    <Border.Background>
        <SolidColorBrush Color="Aqua" />
    </Border.Background>
</Border>

你看出区别了吗?

特别要注意的是,这些个写法在 WPF 中,对动画的支持并不友好,因为 Aqua 这样的颜色对象在 WPF 中会被认为是 Brushes.Aqua 这个静态对象,这个对象本身是被冻结了的,WPF 的设计者会认为,如果你动了 Brushes.Aqua,那么所有你引用到的这个颜色画刷的控件,颜色都会变,这就产生了 Bug,所以如果你要在 WPF 里面使用颜色动画,比较推荐的方式是使用 Hex 值。

1.5 css 的写法·一

使用 background: aqua 这样的写法。

这是显示的效果:

<template>
  <div class="grid-container">
    <div class="border"></div>
  </div>
</template>

<style lang="css" scoped>
  .grid-container {
    display: grid;
    width: 300px;
    height: 300px;
  }

  .border {
    align-self: stretch;
    justify-self: stretch;
    background: aqua;
  }
</style>

1.6 css 的写法·二

使用 background-color: aqua 这样的写法。

这是显示的效果:

<template>
  <div class="grid-container">
    <div class="border"></div>
  </div>
</template>

<style lang="css" scoped>
  .grid-container {
    display: grid;
    width: 300px;
    height: 300px;
  }

  .border {
    align-self: stretch;
    justify-self: stretch;
    background-color: aqua;
  }
</style>

2. SolidColorBrush Hex 色值

WPF 和 Avalonia 关于 Background 的写法真的有很多,光是上面关于 Aqua 的写法,你可以看到就有四种,其实 Hex 色值的写法也有这么多,所以我们就选取一个最有代表性的写法。

Background="#66CCFF"

我们直接来看 css 的样子是怎样的。

css 写法之一:

background: #66ccff;

css 写法之二

background-color: #66ccff;

3. SolidColorBrush RGB 色值

Avalonia 中支持以下的方式设置 RGB 色值:

Background="rgb(123,23,12)"

同样,Avalonia 支持 Alpha 通道(WPF 也支持但是如果要写会比较麻烦,这边说的支持指的是写起来会很轻松):

Background="rgba(123,23,12,100)"

我们来看一下 css 中对应的效果是怎样的:

对应 css 代码如下:

background: rgb(123, 23, 12);

或者

background-color: rgb(123, 23, 12);

同样,它们支持 rgba(123,23,12,100) 的写法,此处不再赘述。

4. LinearGradientBrush 线性渐变

我们在 https://www.cnblogs.com/fanbal/articles/18736036 中有对 Avalonia 的渐变色有简单的介绍,关于 WPF 的实现其实也是类似的,也是维护 LinearGradientBrush 和 GradientStop,只是有些写法会比较原始。

我们提供的和 Avalonia 示例如下(运用到了 Avalonia 对渐变点的相对描述。WPF 不支持,WPF 只能使用绝对坐标表示画刷的起始点,但是区别不算很大,WPFer 不要就此感到生气呀)。

<Grid Width="300" Height="300">

    <Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <Border.Background>
            <LinearGradientBrush StartPoint="0%,50%" EndPoint="100%,50%">
                <GradientStop Offset="0.0" Color="Aqua" />
                <GradientStop Offset="1.0" Color="Yellow" />
            </LinearGradientBrush>
        </Border.Background>
    </Border>

</Grid>

对应的 css 等效写法是这样的:

background: linear-gradient(90deg, aqua 0%, yellow 100%);

如果你有多个渐变色,你可以这样写:

background: linear-gradient(90deg, aqua 0%, #66ccff 50%, yellow 100%);

注意!这边没有 background-color ,这边只有 background 和 background-image,虽然在示例的地方我们没有提到 background-image,但是这是可以的。

其中第一个参数表示的是渐变色的方向,其中,0deg 表示向上的方向,你还记得 margin 的写法是 "上 右 下 左"吗,在 css 中的第一方向是向上。

虽然也有别的写法,但是出于泛用性,我想列出四个方向对应的角度值:

  1. 向上(从下到上):0deg
  2. 向右(从左到右):90deg
  3. 向下(从上到下):180deg
  4. 向左(从右到左):270deg

具体可以参考:https://developer.mozilla.org/zh-CN/docs/Web/CSS/gradient/linear-gradient

5. ImageBrush 图像填充

WPF 和 Avalonia 里面虽然也有 Image 控件,但是有的时候我们会想给 Border 填充图片,在 html 中也有 img 节点,不过为 div 的 background 填充图片也是很常见的做法。

先来看一下 WPF 和 Avalonia 中添加图片的方式,我们在上面有展示出来,但是我们再来展示一遍,因为你翻页也是相当麻烦的嘛。

如果你要使用图片,你可以以这样的方式:

对应代码如下:

<Grid Width="300" Height="300">

    <Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <Border.Background>
            <ImageBrush Source="your image url 你的图片路径" Stretch="UniformToFill" />
        </Border.Background>
    </Border>

</Grid>

5.1 光填充颜色是不够的

我们直奔 css 的部分来看一下它是怎么样的:

background: url("src/assets/my-image我的图片.png");

我把图片放在了 Vue 项目的 src/assets 的地方,所以路径可以写成这种样子。
关于 url ,它也支持下面的写法:

  1. "src/assets/my-image 我的图片.png"
  2. "/src/assets/my-image 我的图片.png"
  3. "./src/assets/my-image 我的图片.png"
  4. "../src/assets/my-image 我的图片.png"

经过测试放在 Vue 的 src/assets 文件夹内的效果可以正常的呈现。

5.2 Stretch 填充方式的指定在 css 中的写法

我们观察 xml 可以发现,我们使用了 Stretch="UniformToFill" 指定了这个图片在填充中是适应性填充的方式,会尽可能保持比例的将其铺满。

我们来分别展示一下 Stretch="Uniform"Stretch="UniformToFill" 在 css 中可以怎么改。

首先是 Stretch="Uniform",样子是这样的:

为了实现这样的效果,css 请写成这样:

background-size: contain;
background-repeat: no-repeat;
background-position: center;

其次来解决一下 Stretch="UniformToFill" 的等效写法:

css 请写成这个样子:

background-size: cover;
background-repeat: no-repeat;
background-position: center;

好了,现在你就可以顺利在 css 的地方使用图片填充类似 Border 的控件了。

五、BorderBrush BorderThickness 边框的颜色与粗细

1. 简单的边框

在 WPF 和 Avalonia 中,我们可以为 BorderThickness 提供粗细相关的设置,以及为 BorderBrush 附加上边框颜色。

我们为你提供了一个示例:

具体的代码是这样的:

<Grid Width="300" Height="300">

    <Border
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch"
        Background="Aqua"
        BorderBrush="Red"
        BorderThickness="2" />

</Grid>

那么在 css 的部分有什么对应我们的 BorderThicknessBorderBrush 呢?

有的,你可以使用 border 这个 css 属性进行设置,写成border: 2px solid red;

<template>
    <div class="grid-container">
        <div class="border"></div>
    </div>
</template>

<style lang="css" scoped>
.grid-container {
    display: grid;
    width: 300px;
    height: 300px;

}

.border {
    align-self: stretch;
    justify-self: stretch;
    background: aqua;
    border: 2px solid red;
}
</style>

其中 border 的格式是这样的:

  1. 尺寸值(一般来说是像素值,注意带单位)
  2. 填充模式,你可以填其他的值来实现虚线的效果,但是一般来说会填 solid 来表示是最标准的线,不是虚线,不是波浪线,非常的标准正经。
  3. 颜色,实际上你可以使用 Hex 颜色值或者是 RGB 颜色值等等。

我来给你提供一个模板来让你能够更快使用吧,把<尖括号>里面的参数替换成你想要的就行!

border: <BorderThickness> solid <Color>;

2. BorderThickness 的详细写法在 css 中的等效实现

你可以通过 BorderThickness 实现分割线的效果,这就是 BorderThickness 的一个重要应用,但是这如何在 css 中实现?

先来看一下 WPF 和 Avalonia 中本来是怎么写的吧。

<Grid Width="300" Height="300">

    <Border
        HorizontalAlignment="Stretch"
        VerticalAlignment="Center"
        BorderBrush="Red"
        BorderThickness="0,2,0,0" />

</Grid>

css 中,你可以这样子做,重点请看 border-top: 2px solid red;

<template>
  <div class="grid-container">
    <div class="border"></div>
  </div>
</template>

<style lang="css" scoped>
  .grid-container {
    display: grid;
    width: 300px;
    height: 300px;
  }

  .border {
    align-self: center;
    justify-self: stretch;
    background: aqua;
    border-top: 2px solid red;
  }
</style>

在 css 中,你可以分别设置 border-topborder-bottomborder-leftborder-right,以border 的最为标准泛用的写法,来将他们设置出来。

参看:https://developer.mozilla.org/zh-CN/docs/Web/CSS/border-top

六、CornerRadius 圆角

WPF 和 Avalonia 中的圆角可以使用 CornerRadius="10" 这种形式来设置,具体的效果就像这样:

xaml 或者 axaml 代码就像这样:

<Grid Width="300" Height="300">

    <Border
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch"
        Background="DarkBlue"
        CornerRadius="10" />

</Grid>

这个属性在 css 中非常好设置,你可以使用 border-radius 来达到同样的效果。

<template>
  <div class="grid-container">
    <div class="border"></div>
  </div>
</template>

<style lang="css" scoped>
  .grid-container {
    display: grid;
    width: 300px;
    height: 300px;
  }

  .border {
    align-self: stretch;
    justify-self: stretch;
    background: darkblue;
    border-radius: 10px;
  }
</style>

七、Shadow 阴影

使用阴影来呈现 UI 的质感是很常见的一种做法,在 WPF 和 Avalonia 中你可以为控件增加 Effect 的某 Effect 来实现,在 Avalonia 中另外还提供了 BoxShadow 的做法,所以我们要稍微介绍一下这两种做法,然后再介绍 css 中是怎么实现。

1. WPF 的阴影实现方法

效果:

代码:

<Grid Width="300" Height="300">
    <Border
        Width="200"
        Height="250"
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch"
        Background="White"
        BorderBrush="{x:Null}"
        CornerRadius="10">
        <Border.Effect>
            <DropShadowEffect
                BlurRadius="20"
                Direction="-90"
                Opacity="0.2"
                ShadowDepth="4" />
        </Border.Effect>
    </Border>
</Grid>

2. Avalonia 的阴影实现方法

2.1 DropShadowEffect

效果:

代码:

<Grid Width="300" Height="300">
    <Border
        Width="200"
        Height="250"
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch"
        Background="White"
        CornerRadius="10">
        <Border.Effect>
            <DropShadowEffect
                BlurRadius="20"
                OffsetX="0"
                OffsetY="4"
                Opacity="0.2" />
        </Border.Effect>
    </Border>
</Grid>

2.2 BoxShadow 属性

在 Avalonia 中你可以使用类似 BoxShadow="0 4 20 0 #33000000" 的形式来快速创建阴影,其中它的格式是这样的:

  1. X 偏移,很少有 X 水平方向的移动,一般填 0
  2. Y 偏移,一般都是竖向的偏移,所以这个会变一下,填一个小一点的数字
  3. 模糊程度,填 10 或者 20 都还算合理,再往上我觉得太大了
  4. 缩放比例,一般不用太在意,填 0 就好
  5. 颜色,这里没有透明度,所以使用带 Alpha 通道的颜色来控制颜色,比如我使用的 #33000000,注意,在 Avalonia 的描述中,Alpha 通道在 RGB 的前面,属于 ARGB 格式。

这里也给你一个快捷写法:0 竖直偏移 模糊 0 透明颜色(A在前面),然后填上吧。

效果:

代码:

<Grid Width="300" Height="300">
    <Border
        Width="200"
        Height="250"
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch"
        Background="White"
        BoxShadow="0 4 20 0 #33000000"
        CornerRadius="10" />
</Grid>

3. css 中的实现方法

这个的效果和 Avalonia 的 BoxShadow 是类似但是有一些不同之处,比如说在透明颜色的格式上,以及 BoxShadowbox-shadow 的参数上。

效果:

代码:

<template>
  <div class="grid-container">
    <div class="border"></div>
  </div>
</template>

<style lang="css" scoped>
  .grid-container {
    display: grid;
    width: 300px;
    height: 300px;
  }

  .border {
    align-self: stretch;
    justify-self: stretch;
    background: white;
    border-radius: 10px;
    width: 200px;
    height: 250px;
    box-shadow: 0px 4px 20px #00000033;
  }
</style>

你需要注意的是:

  1. 在 css 的部分,Alpha 通道的描述是在最后的,格式是 RGBA!
  2. box-shadow 的格式是 水平偏移、竖直偏移、模糊程度、透明颜色值

我们也提供一个可以参考的格式:0 竖直偏移 模糊 透明颜色(A在后面)

八、Visibility IsVisible 可见性

在 WPF 中,我们可以使用 Visibility 来设置可见性,Avalonia 认为这样对数据绑定来说过于麻烦,所以采用了 IsVisible 直接使用 bool 类型来控制可见性。

1. WPF 的隐藏实现

先来看 WPF 的隐藏的写法:

Visibility="Collapsed"

或者

Visibility="Hidden"

一般来说 Collapse 更加泛用一些,它在隐藏后,会让容器重新布局,就像空间真的消失了一样,而 Hidden 会仍然占用布局空间(我说的不是内存空间,是 UI 上的布局空间,我要强调一下,这个东西和性能没关系!)。

2. Avalonia 的隐藏实现

IsVisible="False"

通过设置 IsVisible 就可以控制控件的显示和隐藏了。

3. css 的隐藏实现

visibility: collapse;
visibility: hidden;

css 的思路和 WPF 是一致的,至于 css 怎么显示?

visibility: visible;

使用 visible 即可。

九、Opacity 不透明度

不透明度也是一个很有用的一项内容,在 WPF 和 Avalonia 中,你可以使用 Opacity 实现不透明度的设置。

纯黑但是看起来是灰色的样子,来自不透明度的作用。

代码是这样的:

<Grid Width="300" Height="300">

    <Border
        Width="200"
        Height="250"
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch"
        Background="Black"
        CornerRadius="10"
        Opacity="0.1" />

</Grid>

css 的部分,你可以使用下面的方式实现,注意看opacity: 0.1

<template>
  <div class="grid-container">
    <div class="border"></div>
  </div>
</template>

<style lang="css" scoped>
  .grid-container {
    display: grid;
    width: 300px;
    height: 300px;
  }

  .border {
    align-self: stretch;
    justify-self: stretch;
    background: black;
    border-radius: 10px;
    width: 200px;
    height: 250px;
    opacity: 0.1;
  }
</style>

十、总结

WPF 和 Avalonia html + css 备注
Width width 可以提供像素值(带单位),如 80px
Height height 可以提供像素值(带单位),如 80px
HorizontalAlignment="Left" justify-self: self-start 在 grid 布局下的样子,水平、左对齐
HorizontalAlignment="Right" justify-self: self-end 在 grid 布局下的样子,水平、右对齐
HorizontalAlignment="Center" justify-self: center 在 grid 布局下的样子,水平、居中
VerticalAlignment="Top" align-self: self-start 在 grid 布局下的样子,竖直、顶对齐
VerticalAlignment="Bottom" align-self: self-end 在 grid 布局下的样子,竖直、底对齐
VerticalAlignment="Center" align-self: center 在 grid 布局下的样子,竖直、居中
VerticalAlignment="Stretch" align-self: stretch 在 grid 布局下的样子,水平、拉伸
VerticalAlignment="Stretch" align-self: stretch 在 grid 布局下的样子,竖直、拉伸
Margin margin WPF 和 Avalonia 的 Margin 传入的格式是 "左,上,右,下" ,css 的 margin 的传入格式是 "上 右 下 左"(记得带 px 单位!)
Background background 详情可以看本文第四节,支持纯色、渐变色和图片,也涉及到了对于图片的 Stretch 相关的处理方法
BorderBrush border border 同时支持 颜色的框的粗细
BorderThickness border 、border-top、border-right、border-bottom、border-left border 同时支持 颜色的框的粗细、border-top 系列可以实现单方向的线,实现分隔线
CornerRadius border-radius
DropShadowEffect、BoxShadow box-shadow box-shadow 的格式是 水平偏移、竖直偏移、模糊程度、透明颜色值
Visibility、IsVisible visibility 和 WPF 出奇的一致,属性有 visible、hidden 和 collapse
Opacity opacity

这就是本文的主要内容了,如果想要看的话,就速查这里我整理出来的表格吧。

posted @ 2025-03-21 13:22  fanbal  阅读(329)  评论(0)    收藏  举报