Venho de um fundo maioritariamente web e um pouco de Windows Forms. Para um novo projeto, estaremos usando o WPF. A aplicação WPF irá precisar de 10 - 20 pequenos ícones e imagens para fins ilustrativos. Estou pensando em armazená-los na montagem como recursos embutidos. É esse o caminho certo a seguir?
Como especificar no XAML que um controle de imagem deve carregar a imagem de um recurso incorporado?
Se você vai utilizar a imagem em vários lugares, então vale a pena's carregar os dados da imagem apenas uma vez na memória e depois compartilhá-la entre todos os elementos Image
.
Para fazer isso, crie um BitmapSource
como um recurso em algum lugar:
<BitmapImage x:Key="MyImageSource" UriSource="../Media/Image.png" />
Então, no seu código, use algo como:
<Image Source="{StaticResource MyImageSource}" />
No meu caso, descobri que eu tinha que definir o arquivo "Image.png" para ter uma ação de construção de "Resource" ao invés de apenas "Content". Isto faz com que a imagem seja carregada dentro do seu conjunto compilado.
Sim, é o caminho certo.
Você poderia usar a imagem no arquivo de recurso apenas usando o caminho:
<Image Source="..\Media\Image.png" />
Você deve definir a ação de construção do arquivo de imagem para "Resource".
Se você're usando Blend, para facilitar ainda mais e não ter nenhum problema para obter o caminho correto para o atributo Source, basta arrastar e soltar a imagem do painel do Projeto para o designer.