概述
UWP Community Toolkit 中有一个 Extensions 的集合,它们可以帮助开发者实现很多基础功能,省去自己造轮子的过程,本篇我们先来看一下 Extensions 的功能都有哪些,再后面会针对每一种 Extensions 做详细的代码分析。
Extensions 集合涵盖了很多方面的扩展,我们先来看一下官方示例的截图:
下面我们分别来看一下每一种扩展的调用过程和展示效果。
调用示例
1. FrameworkElementExtensions
FrameworkElementExtensions 为任何 FrameworkElement 提供了一种简单的绑定实际尺寸的方式,扩展利用 EnableActualSizeBinding 来指定是否允许绑定实际尺寸中的 ActualWidth 和 ActualHeight。
来看一下简单的代码示例:
我们使用两个 TextBlock 来显示实际绑定尺寸的宽度和高度,图一是 EnableActualSizeBinding 为 True 时的显示,图二时为 False 时的错误信息显示。
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <StackPanel Orientation="Vertical"> <Rectangle x:Name="TargetObject" extensions:FrameworkElementExtensions.EnableActualSizeBinding="true" Width="300" Height="200" Fill="LightBlue"/> <TextBlock Text="{Binding ElementName=TargetObject, Path=(extensions:FrameworkElementExtensions.ActualWidth)}"/> <TextBlock Text="{Binding ElementName=TargetObject, Path=(extensions:FrameworkElementExtensions.ActualHeight)}"/> </StackPanel></Grid>
2. ListViewExtensions
ListViewExtensions 为每一种继承了 ListViewBase 类的控件提供了一种轻量级的方式来扩展它的附加属性。目前扩展的附加属性有 AlternateColor、AlternateItemTemplate 和 StretchItemContainerDirection;需要注意的是,扩展使用 ContainerContentChanging 事件来保证工作,如果控件的 ItemsPanel 被设置为 ItemsStackPanel 或 ItemsWrapGrid,那么扩展将不能正常工作。另外 StretchItemContainerDirection 有 Horizontal、Vertical 和 Both 三个选项。
来看一下简单的代码示例:
我们把 AlternateColor 设置为浅灰色,AlternateItemTemplate 中的文字前景色设置为橙色,StretchItemContainerDirection 设置为 Both;可以看到运行显示中 test01 test03 这些元素的显示和设置是一致的。
<Page.Resources> <DataTemplate x:Name="NormalTemplate"> <TextBlock Text="{Binding Title}" Foreground="Green"></TextBlock> </DataTemplate>