Wybierając Resource lub Content decydujemy się na zasób binarny. Build Action ustawione na Resource spowoduje, że plik zostanie wbudowany w assembly. W przypadku gdy wybierzemy Content, plik pozostanie poza assembly, ale w metadanych zostanie ustawiony atrybut AssemblyAssociatedContentFile, który rejestruje, czy plik istnieje. W przypadku opcji Content, zachodzi już konieczność ustawienie Copy to Output Directory. Dzięki temu, podobnie jak dla Build Action - Resource można w xaml podawać ścieżkę do pliku w wygodnej postaci , np . :
<Image Source="resource_image.png" HorizontalAlignment="Left" /> <Image Source="content_image.png" HorizontalAlignment="Right" />
Co ciekawe nie możemy się odwoływać ze skompilowanego xaml do plików, które nie są dołączone do projektu, nawet jeśli są w tym samym folderze.
W przypadku takich plików, można podać pełną ścieżkę do pliku, lub odwołać się do niego przez site of origin.
<Image Source="E:\Projects\Wpf\Resources\loose_file.png"/> <Image Source="pack://siteOfOrigin:,,,/star.png" />
Można także odwoływać się do zasobów zaszytych w innych dll, za pomocą następującej składni :
AssemblyReference;Component/ResourceName, np. MyAssembly.dll;MyProject/image1.png.
Czasami zachodzi także potrzeba ustawienia zasobu z poziomu kodu. Ścieżkę podaje się "opakowaną" w klasę Uri. Np.
image1.Source = new BitmapImage(new Uri("pack://siteOfOrigin:,,,/star.png"));
Brak komentarzy:
Prześlij komentarz