用于特殊目的的动态资源 用于引用Resources字典中的项的StaticResource的替代方法是DynamicResource,如果您在上面的示例中仅使用DynamicResource替换StaticResource,则程序似乎运行相同。但是,这两个标记扩展非常不同。在解析XAML并构建页面时,StaticResource仅访问字典中的项目一次。但DynamicResource维护字典键和该字典项的属性集之间的链接。如果键引用的资源字典中的项发生更改,DynamicResource将检测到该更改并将新值设置为该属性。 持怀疑态度?我们来试试吧。 DynamicVsStatic项目有一个XAML文件,它定义了一个类型为string的资源项,其键为currentDateTime,即使字典中的项是字符串“Not actual a DateTime”! 此字典项在XAML文件中被引用四次,但其中一个引用被计算出来。在前两个示例中,Label的Text属性是使用StaticResource和DynamicResource设置的。在后两个示例中,Span对象的Text属性设置类似,但在Span对象上使用DynamicResource会出现在注释中:
点击(此处)折叠或打开
<ContentPage xmlns=""
xmlns:x=""
x:Class="DynamicVsStatic.DynamicVsStaticPage"
Padding="5, 0">
<ContentPage.Resources>
<ResourceDictionary>
<x:String x:Key="currentDateTime">Not actually a DateTime</x:String>