WPF: You can use StaticResource only once.

I have a static resource defined in my Windows XAML WPF:

<Window.Resources>
    <Image x:Key="MyImage" Source="../Icons/img.png" Width="16" Height="16" Stretch="None" />
</Window.Resources>

I want to use it two times:

<Grid>
    <Button Content="{StaticResource MyImage}"  RenderOptions.BitmapScalingMode="NearestNeighbor" RenderOptions.EdgeMode="Aliased" />
</Grid>

...

<Grid>
    <Button Content="{StaticResource MyImage}"  RenderOptions.BitmapScalingMode="NearestNeighbor" RenderOptions.EdgeMode="Aliased" />
</Grid>

But it is displayed as a button image only once. On the last button. The first button has no image.

When I delete the second button, it works for the first. How to use StaticResource several times? The Visual Studio GUI Designer displays images on both buttons.

+4
source share
1 answer

By default, XAML resources are shared, which means that there is only one instance that is reused as often as specified in XAML.

( ) , .

x:Shared false:

<Image x:Key="MyImage" x:Shared="false" Source="../Icons/img.png" Width="16" Height="16"/>

. BitmapImage, :

<Window.Resources>
    <BitmapImage x:Key="MyImage" UriSource="../Icons/img.png"/>
</Window.Resources>

<Button>
    <Image Source="{StaticResource MyImage}" Width="16" Height="16"/>
</Button>
+10

Source: https://habr.com/ru/post/1681649/


All Articles