From 1c49a4cb33e363977f6616086f307b9a938999bd Mon Sep 17 00:00:00 2001 From: SlimeNull Date: Wed, 14 Aug 2024 17:42:18 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0=E6=9B=B4=E5=A4=9A?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/window_options.md | 2 +- docs/images/adaptive-layout1.png | Bin 0 -> 20902 bytes docs/images/adaptive-layout2.png | Bin 0 -> 22034 bytes docs/zh/adaptive-layout.md | 65 +++++++ docs/zh/value_converters.md | 285 +++++++++++++++++++++++++++++++ docs/zh/window_options.md | 2 +- 6 files changed, 352 insertions(+), 2 deletions(-) create mode 100644 docs/images/adaptive-layout1.png create mode 100644 docs/images/adaptive-layout2.png create mode 100644 docs/zh/adaptive-layout.md diff --git a/docs/en/window_options.md b/docs/en/window_options.md index b58ee9f..52d9edb 100644 --- a/docs/en/window_options.md +++ b/docs/en/window_options.md @@ -1,7 +1,7 @@ --- title: Window Options layout: default -nav_order: 4 +nav_order: 5 permalink: /en/window-options parent: Documentation --- diff --git a/docs/images/adaptive-layout1.png b/docs/images/adaptive-layout1.png new file mode 100644 index 0000000000000000000000000000000000000000..f90faef398c7ff290b6e74d16abd2984da0841ce GIT binary patch literal 20902 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 literal 0 HcmV?d00001 diff --git a/docs/images/adaptive-layout2.png b/docs/images/adaptive-layout2.png new file mode 100644 index 0000000000000000000000000000000000000000..b3c4f8d462f488e0742156b5e20dad77a0856b86 GIT binary patch literal 22034 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 L8fh0(>_YwpxYK5c literal 0 HcmV?d00001 diff --git a/docs/zh/adaptive-layout.md b/docs/zh/adaptive-layout.md new file mode 100644 index 0000000..94c84c7 --- /dev/null +++ b/docs/zh/adaptive-layout.md @@ -0,0 +1,65 @@ +--- +title: 自适应布局 +layout: default +nav_order: 7 +permalink: /zh/adaptive-layout +parent: 中文文档 +--- + +# 自适应布局 +{: .fs-9 } + +使用 WPF Suite 提供的值转换器以及布局面板, 你可以轻松实现一种能够占满宽度且自动调整列数的自适应网格布局 +{: .fs-6 .fw-300 } + +--- + +下面是效果: + +![adaptive-layout](/images/adaptive-layout1.png) + +以及当宽度变宽时, 其自动调整列数的结果: + +![adaptive-layout](/images/adaptive-layout2.png) + +其核心原理是: + +1. 使用 ActualWidth 除以每项的宽度, 并得出应有的列数 +2. 使用 WPF Suite 提供的 UniformGrid 设置列间距 + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +这样, 就实现了既能保证元素占满宽度, 也能使元素宽度, 布局的列数根据容器的宽度自动适应 \ No newline at end of file diff --git a/docs/zh/value_converters.md b/docs/zh/value_converters.md index e69de29..cf34943 100644 --- a/docs/zh/value_converters.md +++ b/docs/zh/value_converters.md @@ -0,0 +1,285 @@ +--- +title: 值转换器 +layout: default +nav_order: 6 +permalink: /zh/value-converters +parent: 中文文档 +--- + +# 值转换器 +{: .fs-9 } + +WPF Suite 提供了各种你会经常用到的值转换器, 例如数学计算, 空值, 空字符串以及空集合验证, 类型转换等 +{: .fs-6 .fw-300 } + +--- + +下面是 WPF Suite 中值转换器的使用说明. + +对于可单例访问的值转换器, 你可以通过 `{x:Static ws:转换器类型名.Instance}` 来访问. + + +## AddNumberConverter + +进行数字加法的转换器. + +| 属性 | 类型 | 说明 | +| --- | --- | --- | +| Other | double | 要减去的值, 默认为 0 | + +转换器会将源值加上指定的 Other 值, 如果转换器接受的参数也是数字, 那么也加上参数值 + +转换器的目标类型是 IConvertible 的实现, 那么结果会使用 System.Convert.ChangeType 尝试转换为目标类型, 否则直接返回 double 类型的计算结果. +如果转换失败, 则返回 DependencyProperty.UnsetValue + + +## SubtractNumberConverter + +进行数字减法的转换器. + +| 属性 | 类型 | 说明 | +| --- | --- | --- | +| Other | double | 要减去的值, 默认为 0 | + +转换器会将源值减去指定的 Other 值, 如果转换器接受的参数也是数字, 那么也减去参数值 + +转换器的目标类型是 IConvertible 的实现, 那么结果会使用 System.Convert.ChangeType 尝试转换为目标类型, 否则直接返回 double 类型的计算结果. +如果转换失败, 则返回 DependencyProperty.UnsetValue + + +## MultiplyNumberConverter + +进行数字乘法的转换器. + +| 属性 | 类型 | 说明 | +| --- | --- | --- | +| By | double | 要乘以的值, 默认为 1 | + +转换器会将源值乘以指定的 By 值, 如果转换器接受的参数也是数字, 那么也乘以参数值 + +转换器的目标类型是 IConvertible 的实现, 那么结果会使用 System.Convert.ChangeType 尝试转换为目标类型, 否则直接返回 double 类型的计算结果. +如果转换失败, 则返回 DependencyProperty.UnsetValue + + +## DivideNumberConverter + +进行数字除法的转换器. + +| 属性 | 类型 | 说明 | +| --- | --- | --- | +| By | double | 要除以的值, 默认为 1 | + +转换器会将源值除以指定的 By 值, 如果转换器接受的参数也是数字, 那么也除以参数值 + +转换器的目标类型是 IConvertible 的实现, 那么结果会使用 System.Convert.ChangeType 尝试转换为目标类型, 否则直接返回 double 类型的计算结果. +如果转换失败, 则返回 DependencyProperty.UnsetValue + + +## NumberCompareConverter + +用于比较数字, 并返回布尔值的转换器. + +| 属性 | 类型 | 说明 | +| --- | --- | --- | +| TargetValue | double | 要进行比较的目标值 | +| Comparison | NumberComparison | 数字的比较方法, 可以是等于, 不等于, 大于, 小于, 大于等于, 小于等于 | + +转换器会将源值与目标值使用指定的方法进行比较, 并返回比较结果. 如果转换器参数也是可识别的数字, 那么 "TargetValue" 属性会被忽略, 而是使用转换器参数作为要比较的目标值. + +转换器会忽略目标类型, 始终返回布尔. 如果其中任何一个过程出问题, 则返回 DependencyProperty.UnsetValue + + +## ClampNumberConverter + +将数字限制在指定最小值与最大值之间的转换器. + +| 属性 | 类型 | 说明 | +| --- | --- | --- | +| Minimum | double | 最小值, 默认为负无限 | +| Maximum | double | 最大值, 默认为正无限 | + +转换器会将源值限制在指定的最小到最大值区间, 使其不小于最小值, 不大于最大值. (可以等于) + +转换器的目标类型是 IConvertible 的实现, 那么结果会使用 System.Convert.ChangeType 尝试转换为目标类型, 否则直接返回 double 类型的结果. +如果转换失败, 则返回 DependencyProperty.UnsetValue + + +## NumberConverter + +将数字转换为指定目标数字类型的转换器. + +| 属性 | 类型 | 说明 | +| --- | --- | --- | +| TargetType | Type | 目标类型, 默认为 null | + +转换器会将源值转换为所需的目标类型. 由于目标类型会自动传入到转换器逻辑, 所以用户一般不需要手动指定 "TargetType". + +除非绑定的目标类型不明确, 或者该转换器位于转换器组中且不是最后一个时, 用户才需要强制指定目标类型. +如果转换存在异常, 则返回 DependencyProperty.UnsetValue + + +## NumberToThicknessConverter + +将数字转换为 Thickness 类型的转换器. + +此转换器可单例访问 + + +## NumberToCornerRadiusConverter + +将数字转换为 CornerRadius 类型的转换器. + +此转换器可单例访问 + + +## ValueIsNullConverter + +判断值是否为空的转换器. 如果为空, 则返回 true, 否则返回 false + +此转换器可单例访问 + + +## ValueIsNotNullConverter + +判断值是否不为空的转换器. 如果不为空, 则返回 true, 否则返回 false + +此转换器可单例访问 + + +## EqualConverter + +判断值是否相等的转换器. + +| 属性 | 类型 | 说明 | +| --- | --- | --- | +| TargetValue | object | 要比较的目标值, 默认为 null | + +转换器会比较源值以及目标值是否相等, 如果相等, 则返回 true, 否则返回 false. 如果转换器参数不为空, 则忽略 "TargetValue" 属性, 转而使用转换器参数为目标值. + +此转换器可单例访问 + + +## NotEqualConverter + +判断值是否不相等的转换器. + +| 属性 | 类型 | 说明 | +| --- | --- | --- | +| TargetValue | object | 要比较的目标值, 默认为 null | + +转换器会比较源值以及目标值是否不相等, 如果不相等, 则返回 true, 否则返回 false. 如果转换器参数不为空, 则忽略 "TargetValue" 属性, 转而使用转换器参数为目标值. + +此转换器可单例访问 + + +## BooleanToVisibilityConverter + +将布尔值转换为 Visibility 的转换器. + +| 属性 | 类型 | 说明 | +| --- | --- | --- | +| ValueWhenTrue | Visibility | 当布尔值为 true 时, 返回的目标值, 默认为 Visibility.Visible | +| ValueWhenFalse | Visibility | 当布尔值为 false 时, 返回的目标值, 默认为 Visibility.Collapsed | + +当布尔值为 true 时, 返回 ValueWhenTrue 的值, 否则返回 ValueWhenFalse 的值. + +此转换器可单例访问 + + +## InvertBooleanConverter + +用于反转布尔值的转换器. + +当源值为 true 时, 返回 false, 否则返回 true. 如果出现错误, 则返回 DependencyProperty.UnsetValue + +此转换器可单例访问 + + +## InvertThicknessConverter + +用于反转 Thickness 值的转换器. + +转换器会将源 Thickness 的值乘以负一, 然后返回. 如果原值不是 Thickness, 则返回 DependencyProperty.UnsetValue + +此转换器可单例访问 + + +## StringIsNullOrEmptyConverter + +用于判断字符串是否为 null 或空字符串的转换器. + +如果是 null 或空字符串, 则返回 true, 否则返回 false. 如果源值不是字符串, 也返回 false + +此转换器可单例访问 + + +## StringIsNullOrWhitespaceConverter + +用于判断字符串是否为 null 或空白字符串的转换器. + +如果是 null 或空白字符串, 则返回 true, 否则返回 false. 如果源值不是字符串, 也返回 false + +此转换器可单例访问 + + +## StringIsNotNullOrEmptyConverter + +用于判断字符串是否为 null 或空字符串的转换器. + +如果不是 null 或空字符串, 则返回 true, 否则返回 false. 如果源值不是字符串, 也返回 false + +此转换器可单例访问 + + +## StringIsNotNullOrWhitespaceConverter + +用于判断字符串是否为 null 或空白字符串的转换器. + +如果不是 null 或空白字符串, 则返回 true, 否则返回 false. 如果源值不是字符串, 也返回 false + +此转换器可单例访问 + + +## StringToImageSourceConverter + +用于将字符串转换为 ImageSource 的转换器. + +如果字符串是有效的 Uri, 则通过 Uri 创建一个 BitmapImage, 否则返回 DependencyProperty.UnsetValue + +此转换器可单例访问 + + +## CollectionIsNullOrEmptyConverter + +判断集合是否为 null 或空集合的转换器. + +如果值为 null 或空集合, 则返回 true. 如果存在任何错误, 则返回 DependencyProperty.UnsetValue + +此转换器可单例访问 + + +## CollectionIsNotNullOrEmptyConverter + +判断集合是否不为 null 或空集合的转换器. + +如果值不为 null, 且不是空集合, 则返回 true. 如果存在任何错误, 则返回 DependencyProperty.UnsetValue + +此转换器可单例访问 + + +## PrimitiveTypeConverter + +基元类型转换器. + +将源值, 使用 System.Convert.ChangeType 转换为目标类型. + +{: .warning } +> 注意, 当使用该转换器将浮点类型转换为整数型时, 其逻辑与 Math.Round 一致, 如果你需要舍去小数部分, 你应该使用 NumberConverter + +## FallbackConverter + +提供 Fallback 功能的多值转换器. + +返回所有值中第一个不为 null 且不为 DependencyProperty.UnsetValue 的值. + +此转换器可单例访问 \ No newline at end of file diff --git a/docs/zh/window_options.md b/docs/zh/window_options.md index 84d445b..b40aea2 100644 --- a/docs/zh/window_options.md +++ b/docs/zh/window_options.md @@ -1,7 +1,7 @@ --- title: 窗口选项 layout: default -nav_order: 4 +nav_order: 5 permalink: /zh/window-options parent: 中文文档 ---