从Microsoft Store可以下载一个App,叫做XAML Controls Library,里面例举了许多WinUI中定义的XAML控件。可以逐一浏览。另一个用于展示WindowsCommunityToolkit的App叫做Windows Community Toolkit Sample App,也可以下载浏览。

如何给这些控件们分类是一个有学问的问题。控件那么多,用的时候选哪个呢?这需要了解每个控件的作用和意图。

有些控件的作用独特,很容易可以把它们与其他控件区分出来:

  • WebView,显示Web内容
  • InkCanvas,用于笔迹输入
  • PersonPicture,用于显示账户头像
  • Image,用来显示图片
  • MediaElement和MediaPlayerElement,用来播放视频
  • AnimatedVisualPlayer,用来显示Adobe AfterEffects创建的动画
  • ProgressBar和ProgressRing,用来显示进度
  • ToolTip,用来显示提示信息
  • DatePicker和TimePicker,用来选择日期和时间
  • CalendarView,用来显示日历
  • CalendarDataPicker,从日历上挑选一个日期
  • ColorPicker,颜色选择器

触屏相关:

  • PullToRefresh,以下拉方式刷新列表或者井格内容,估计是为了方便触屏操作
  • SwipeControl,指划控制

样式相关:

  • Acrylic,透薄效果
  • Reveal,许多控件的默认效果,鼠标靠近时会有视觉上的突出效果
  • Reveal Focus,用于突出具有Tab焦点的控件
  • Compact Sizing,将大小减小一号

文字显示和处理相关的控件

  • TextBlock,显示一段文字
  • RichTextBlock,显示一段文字,可以带超链接、图片等等
  • TextBox,用来输入一段文字
  • RichTextBox,用来处理富文本的编辑
  • PasswordBox,密码输入框
  • AutoSuggestBox,带下拉候选框的文字输入框

选项相关的控件

  • CheckBox,按键的目的主要是让用户选取一至多个选项
  • ComboBox,以弹出列表的方式来展示选项,而不是像CheckBox那样将选项完全罗列出来
  • RadioButton,和CheckBox类似,但是只能多选一
  • RatingControl,用作星级评价
  • Slider,用滑杆来选取值
  • ListBox,以一个列表的方式显示用户可以选择的选项

按键是任何UI界面都必不可少的组成部分,因此种类也五花八门

  • Button,最简单的按键,按下后触发一个动作
  • RepeatButton,一个能够记住自己被按下次数的按键
  • ToggleButton,有开关状态的按键
  • ToggleSwitch,ToggleButton的另一种形式
  • DropdownButton,和ComboBox有点像,但是是触发动作而不是选择内容
  • SplitButton,是DropdownButton的扩展,能够带一个目标对象作为额外参数
  • ToggleSplitButton,能够在SplitButton中显示类似ToggleButton的开关状态
  • HyperlinkButton,显示超链接

内容组织:

  • SemanticZoom,能够显示一个大纲,让用户选择需要跳转的内容
  • ListView,以列表方式显示内容
  • TreeView,以嵌套列表的方式显示内容
  • GridView,以横列方式显示内容
  • DataGrid,属于WindowsCommunityToolkit,主要是以表格的方式显示数据
  • FlipView,以横幅的方式来显示诸如图片之类的内容

滚动,如果内容比显示区域大的时候,就会用到滚动:

  • ScrollViewer,以滚动方式显示内容
  • Hub,横向滚动显示内容

页面组织:

  • Pivot,以组标签的方式组织内容
  • NavigationView,提供可缩放的边栏菜单,用于访问顶层元素

弹出内容:

  • ContentDialog,弹出一个模态对话框
  • Flyout,在原地弹出一个消息框
  • TeachingTip,在某个地方弹出一个消息框

菜单和工具栏

  • CommandBar,工具栏
  • CommandBarFlyout,工具栏飞页
  • AppBarButton,工具栏图标
  • AppBarSeparator,工具栏分隔线
  • AppBarToggleButton,工具栏触发按键
  • MenuBar,菜单栏
  • MenuFlyout,菜单栏飞页
  • StandardUICommand,常用菜单或者工具栏命令
  • XamlUICommand,可以用来定义命令的外观呈现

布局相关:

  • Border,边框
  • Canvas,画布,支持用坐标来描述子元素的位置
  • Grid,以横列方式显示子元素
  • RelativePanel,子元素可以使用彼此之间的关系来布局
  • SplitView,在内容左边或者右边制造出一个面板
  • StackPanel,将多个子元素横向或者竖向堆叠在一起
  • VariableSizedWrapGrid,表格方式组织子元素,单个子元素可以跨多行或者多列
  • ViewBox,一个具有缩放特性的容器

动态效果:

  • Parallax,可以让背景随着内容滚动,产生视察效果
  • Animation interop,在鼠标移入移出时加入Q弹效果
  • Connected Animation,用渐变效果增加前后联系
  • Earsing Functions,加快或者减弱动画效果
  • Implicit Transitions,根据权属来调整动画效果
  • Page Transitions,调整换页效果,有点类似PPT换页
  • Theme Transitions,主题中带的一套变换

数据驱动:

  • ItemsRepeater,用来呈现大量数据条目

(完)