静态资源和动态资源的区别在于静态资源只从资源集合中获取对象一次,然而动态资源在每次需要对象时都会重新从资源集合中查找对象。这意味着可以在同一键下放置一个全新对象,并且动态资源会应用该变化。
作为一般性规则,只有在下列情况下才需要使用动态属性:
1.资源具有依赖系统设置的属性。
2.计划通过编程替换动态资源。
不应该过渡使用动态资源。主要原因是对资源的修改未必会触发对用户界面的更新
<Window.Resources> <ImageBrush x:Key="TileBrush" x:Name="DynamicBrush" TileMode="Tile" ViewportUnits="Absolute" Viewport="0 0 32 32" ImageSource="happyface.jpg" Opacity="0.3"></ImageBrush> </Window.Resources> <Grid> <StackPanel Margin="5"> <Button Background="{DynamicResource TileBrush}" Padding="5" FontWeight="Bold" FontSize="14" Margin="5"> 使用动态资源 </Button> <Button Padding="5" Margin="5" Click="cmdChange_Click" FontWeight="Bold" FontSize="14">改变画刷</Button> <Button Background="{StaticResource TileBrush}" Padding="5" Margin="5" FontWeight="Bold" FontSize="14"> 使用静态资源 </Button> </StackPanel> </Grid>
this.Resources["TileBrush"] = new SolidColorBrush(Colors.LightBlue);