我的WPF Windows XAML中定义了静态资源:
<Window.Resources>
<Image x:Key="MyImage" Source="../Icons/img.png" Width="16" Height="16" Stretch="None" />
</Window.Resources>
我想用它两次次:
<Grid>
<Button Content="{StaticResource MyImage}" RenderOptions.BitmapScalingMode="NearestNeighbor" RenderOptions.EdgeMode="Aliased" />
</Grid>
...
<Grid>
<Button Content="{StaticResource MyImage}" RenderOptions.BitmapScalingMode="NearestNeighbor" RenderOptions.EdgeMode="Aliased" />
</Grid>
但它只显示为按钮图像一次。在最后一个按钮上。第一个按钮没有图像。
当我删除第二个按钮时,它适用于第一个按钮。如何多次使用StaticResource? Visual Studio GUI Designer在两个按钮上显示图像。
答案 0 :(得分:13)
默认情况下,XAML资源是共享的,这意味着只有一个实例可以像在XAML中引用一样频繁地重用。
但是,Image控件(与任何其他UI元素一样)只能有一个父控件,因此无法共享。
您可以将x:Shared
属性设置为false:
<Image x:Key="MyImage" x:Shared="false" Source="../Icons/img.png" Width="16" Height="16"/>
您通常不使用UI元素作为资源。另一种方法是像这样的BitmapImage资源:
<Window.Resources>
<BitmapImage x:Key="MyImage" UriSource="../Icons/img.png"/>
</Window.Resources>
<Button>
<Image Source="{StaticResource MyImage}" Width="16" Height="16"/>
</Button>