以下のコードで画像を作成してみてください。
sp = new StackPanel() { Orientation = Orientation.Horizontal };
Image myImage = new Image() { HorizontalAlignment = HorizontalAlignment.Left, Width = 16, Height = 16, Margin = new Thickness(1, 0, 0, 0) };
MyImage.Source = new BitmapImage(new Uri("/MyAssembly;component/folder/image1.png", UriKind.RelativeOrAbsolute));
sp.Children.Add(MyImage);
その後、アプリを実行すると、画像が表示されません。Fiddler でデータを確認すると、404 エラーが発生しました。上の画像のソースは次のようなものです。
http://localhost:80/MyAssembly;component/folder/image1.png
ただし、このイメージはアセンブリ MyAssembly にコンパイルされます。
次のマークアップを使用して、アセンブリからイメージ xaml を取得しても問題ありません。
<Image Source="/MyAssembly;component/folder/image1.png"/>
混乱している。理由がわからない。コードで動的画像を取得するには?
更新: Clemens からの情報に感謝します。次のコードを試してください:
sp = new StackPanel() { Orientation = Orientation.Horizontal };
ImageSourceConverter converter = new ImageSourceConverter();
Image myImage = new Image() { HorizontalAlignment = HorizontalAlignment.Left, Width = 16, Height = 16, Margin = new Thickness(1, 0, 0, 0) };
MyImage.Source = (ImageSource)converter.ConvertFromString("/MyAssembly;component/folder/image1.png");
sp.Children.Add(MyImage);
前回と同じ結果。Fiddler からのメッセージ: お探しのリソースは削除されたか、名前が変更されたか、一時的に利用できません。
このためのリソースはまだ
http://localhost:80/MyAssembly;component/folder/image1.png.