2011-07-27 18 views
7

StackPanelをプログラムで生成し、ImageStackPanelに追加しようとしています。何とか私は空のStackPanelを取得します。私は自分のコードに何か問題が表示されていない、そしてそれがどの例外をスローしませんでした:プログラムでStackPanelに画像を追加

StackPanel Sp = new StackPanel(); 
Sp.Orientation = Orientation.Horizontal; 

Image Img = new Image(); 
BitmapImage BitImg = new BitmapImage(new Uri(
    "/MyProject;component/Images/image1.png", UriKind.Relative)); 
Img.Source = BitImg; 

Sp.Children.Add(Img); 

[EDIT]

私はイメージを追加する別の方法を試してみましたが、それが動作します。

(ショーの画像を)WORKS 次のコードは:

Image Img = new Image(); 
Img.Source = new BitmapImage(new Uri(
      "pack://application:,,,/MyProject;component/Images/image1.png")); 

次のコードは、(画像欠落)が動作しません。

彼らは基本的に私には同じことらしいので、それは私を陰謀
Image Img = new Image(); 
BitmapImage ImgSource = new BitmapImage(new Uri(
    "pack://application:,,,/MyProject;component/Images/image1.png", 
    UriKind.Relative)); 
Img.Source = BitImg; 

なぜ異なるのですか?

+1

を進めています。 – Dotnet

+1

すでにur xamlに存在する他のパネルにstackpanelを追加していますか? stackpanelをいくつかのパネルに追加しない限り、それは画面上にレンダリングされません。既存のパネルにstackpanelを追加してください。 – Bathineni

+0

幅と高さを設定しますが、画像はありません。画像はImagesフォルダにあります。 – KMC

答えて

9
Img.Source = new BitmapImage(new Uri(
      "pack://application:,,,/MyProject;component/Images/image1.png")); 

ユーザーUriKind.Relativeしたい場合は、デフォルトではUriKind.AbsoluteなくUriKind.Relative

を使用しています - URIが別の形式にする必要があります。あなたを見てくださいMSDN

+0

THX :-) uriに間違った文字列を使用すると例外が検出されなかったので面白くない。 – mnemonic

5

いいえrepro。

私はボタンのハンドラに貼り付け/あなたのコードをコピーして、1行を追加しました:

root.Children.Add(Sp); 

ヒント:このコードの末尾にブレークポイントを設定し、すべてのものがあるかどうかを確認するために、「WPFツリービジュアライザ」を使用あなたはそれがどこだと思いますか?地元と自動車の窓にはちょっとしたガラスがあります。

+0

ありがとうございますが、問題はないようです。私は自分のコードを少し変更し、それは動作しますが、私はまだ理解していません。私の編集した質問を見てください。 – KMC

0

最初のコードに問題はありません。そのコードの最後にStackPanelをウィンドウまたはウィンドウ内のグリッドに追加する必要があります。また、イメージのビルドアクションは "リソース"で、イメージURI( "/MyProject;component/Images/image1.png")でなければならないことに注意してください。 "MyProject"はプロジェクトの名前ではなくアセンブリ名でなければなりません。プロジェクトプロパティの[アプリケーション]タブでアセンブリ名を確認します。

0

このコードは、画像ファイルURIが正しく、あなたはまた、期待値にimg.Widthとimg.Heightプロパティを設定する必要があることを確認してください細かい

Uri uri = new Uri("/Assets/default.png", UriKind.Relative);  
BitmapImage imgSource = new BitmapImage(uri);  
profileImage.Source = imgSource; 

または

BitmapImage image = new BitmapImage(new Uri("/Assets/default.png", UriKind.Relative)); 
profileImage.Source = image; 
関連する問題