以画刷为例,定义一个了一个画刷资源。
<ImageBrush x:Key="happy" ViewportUnits="Absolute" TileMode="Tile" Viewport="0 0 30 30" ImageSource="/WPFBasic;component/Thie/btnBackGrand1.jpg"/>
(简单提一下这里平铺的枚举值,这里使用平铺,FlipX、FlipY、FlipXY就是对着X或者Y对称,来回换着,请看下图)
资源放置的位置,可以放在
<Window.Resource>
</Window.Resource>
之中,那么窗口里面的空间可以直接调用这个资源。也可以放在调用的控件所属的任何一个父控件之中去。按图举例:
无论是这个名为happy的资源放到G1、G2、S1、S2,Btn1是都可以访问并且调用的。如果不在父控件之中呢?
<Grid Name="G1">
<Grid Name="G2">
<StackPanel Name="S1">
<StackPanel VerticalAlignment="Center" Name="S2">
<Button Name="Btn1" Background="{StaticResource happy}" Height="50"/>
</StackPanel>
<StackPanel>
<StackPanel.Resources>
<ImageBrush x:Key="happy" ViewportUnits="Absolute" TileMode="Tile" Viewport="0 0 50 50" ImageSource="/WPFBasic;component/Thie/btnBackGrand1.jpg"/>
</StackPanel.Resources>
</StackPanel>
</StackPanel>
</Grid>
</Grid>
像这样皮,就访问不到了...好像是WPF的上下文,它只会往父控件找哎...(静态动态的资源就不怎么说的,无非就是编译后资源是否能改变,动态资源用)。