Ik kom van een voornamelijk web en een beetje Windows Forms achtergrond. Voor een nieuw project gaan we WPF gebruiken. De WPF applicatie zal 10 - 20 kleine iconen en afbeeldingen nodig hebben voor illustratieve doeleinden. Ik denk erover deze in de assembly op te slaan als embedded resources. Is dat de juiste manier?
Hoe specificeer ik in XAML dat een Image control de afbeelding moet laden vanuit een embedded resource?
Als je de afbeelding op meerdere plaatsen gaat gebruiken, dan is het de moeite waard om de afbeeldingsgegevens maar één keer in het geheugen te laden en dan te delen tussen alle Image
elementen.
Om dit te doen, maak je ergens een BitmapSource
aan als resource:
<BitmapImage x:Key="MyImageSource" UriSource="../Media/Image.png" />
Dan, in uw code, gebruik iets als:
<Image Source="{StaticResource MyImageSource}" />
In mijn geval, vond ik dat ik het Image.png
bestand een build action van Resource
moest geven in plaats van alleen Content
. Dit zorgt ervoor dat de afbeelding wordt meegenomen in de gecompileerde assembly.
Ja, het is de juiste manier.
Je zou de afbeelding in het bronbestand kunnen gebruiken door gewoon het pad te gebruiken:
<Image Source="..\Media\Image.png" />
U moet de build action van het image bestand instellen op "Resource".
Als je Blend gebruikt, om het extra gemakkelijk te maken en geen problemen te hebben om het juiste pad voor het Bron attribuut te krijgen, sleep je gewoon de afbeelding van het Project paneel naar de ontwerper.