警告
本文档已存档,组件在当前版本的 Windows 社区工具包中不可用。
虽然目前没有将此组件移植到 8.x 的计划,但欢迎社区表达兴趣或参与将其包含。 如果社区兴趣足够高,这个控件可以移植。
更多信息,请参阅:
原始文档如下。
TextToolbar 控件是 RichEditBox 控件的通用文本编辑控件。 它可以使用 Markdown 格式、RTF 格式进行格式化,还支持实现自定义格式器,这样您可以使用工具栏编辑任何其他格式的文本。 它支持键盘快捷键、按钮切换,以指示是否启用了格式,例如在富文本格式中将光标置于粗体文本上。 还可以从任何格式中删除默认按钮,或者将自定义按钮添加到任何格式,而无需对整个控件进行重排,或者继承格式化程序类。
Syntax
<controls:TextToolbar x:Name="Toolbar" Editor="{x:Bind Editor}" Format="MarkDown"/>
<RichEditBox x:Name="Editor" PlaceholderText="Enter Text Here" />
示例输出
属性
| 资产 | 类型 | Description |
|---|---|---|
| 按钮修改 | 默认按钮修改列表 | 获取或设置要从 UI 中删除的默认按钮的列表 |
| ControlKeyDown | 布尔 | 获取一个值,该值指示 Ctrl 键是否按下 |
| CustomButtons(自定义按钮) | ButtonMap | 获取或设置要添加到默认按钮集的按钮列表 |
| DefaultButtons | ButtonMap | 获取此格式的默认按钮 |
| Editor | RichEditBox (富编辑框) | 获取或设置需要附加的 RichEditBox,这是实现任何格式功能所必需的。 |
| Format | 格式 | 获取或设置要使用的格式化程序以及要提供的按钮 |
| Formatter | 格式器 | 获取或设置格式化程序,该格式化程序用于设置按钮中的文本格式 |
| LastKeyPress | VirtualKey | 获取使用编辑器按下的最后一个键 |
| ShiftKeyDown | 布尔 | 判断 Shift 键是否按下 |
| UseURIChecker | 布尔 | 获取或设置一个值,该值指示是否为链接创建者启用 URI 检查器。 这允许在创建链接之前验证绝对 URI |
创建一个自定义格式化程序
若要创建自己的格式化程序,需要从 Formatter 类继承。 然后在 TextToolbar 上,将 Format 属性设置为 Custom 该属性,然后使用实例化的自定义格式化程序设置 Formatter 该属性。
创建类时,需要重写 DefaultButtons 属性。 这样,就可以定义希望格式化工具在 工具栏上显示的按钮。
如果要使用通用按钮模板,例如粗体、斜体等。可以通过实例化 CommonButtons Formatter 类中的实例来获取这些实例,但是,需要实现 ButtonActions 类,并在 Formatter ButtonActions 的属性中实例化该实例,或替换 Action/Shift Action 所使用的每个按钮上的属性。
关于如何创建 Formatter,请参阅 MarkDownFormatter 类以获取参考信息:MarkDownFormatter 代码
请参阅来自示例 App 的示例格式化程序类:SampleFormatter 代码
可用的 CommonButton:CommonButton 定义
例子
添加/删除按钮的示例
<controls:TextToolbar x:Name="Toolbar" Editor="{x:Bind Editor}">
<controls:TextToolbar.ButtonModifications>
<buttons:DefaultButton Type="Headers" IsVisible="False"/>
</controls:TextToolbar.ButtonModifications>
<controls:TextToolbar.CustomButtons>
<buttons:ToolbarButton
Name="CustomButton"
Icon="ReportHacked"
Position="1"
Activation="{x:Bind System.Action<ToolbarButton>}"
ShortcutKey="H" />
<buttons:ToolbarSeparator Position="2" />
</controls:TextToolbar.CustomButtons>
</controls:TextToolbar>
<RichEditBox x:Name="Editor" PlaceholderText="Enter Text Here" />
var button = Toolbar.GetDefaultButton(ButtonType.Headers);
button.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
Toolbar.CustomButtons.Add(new ToolbarButton
{
Name = "CustomButton",
Icon = new SymbolIcon(Symbol.ReportHacked),
Position = 1,
Activation = button => System.Diagnostics.Debug.WriteLine($"{button.Name} Activated"),
ShortcutKey = Windows.System.VirtualKey.H
});
Toolbar.CustomButtons.Add(new ToolbarSeparator { Position = 2 });
Dim button = Toolbar.GetDefaultButton(ButtonType.Headers)
button.Visibility = Windows.UI.Xaml.Visibility.Collapsed
Toolbar.CustomButtons.Add(New ToolbarButton With {
.Name = "CustomButton",
.Icon = New SymbolIcon(Symbol.ReportHacked),
.Position = 1,
.Activation = Sub(btn) Debug.WriteLine($"{btn.Name} Activated"),
.ShortcutKey = Windows.System.VirtualKey.H})
Toolbar.CustomButtons.Add(New ToolbarSeparator With {.Position = 2})
示例项目
TextToolbar 示例页源。 你可以在 Windows Community Toolkit 示例应用 中 看到实际效果。
要求
| 设备系列 | 通用、10.0.16299.0 或更高版本 |
|---|---|
| Namespace | Microsoft.Toolkit.Uwp.UI.Controls |
| NuGet 包 | Microsoft.Toolkit.Uwp.UI.Controls |