2015-10-15 7 views
5

ImageをUserControlの背景として追加しようとしています。変数の値に応じて、その背景を変更する必要がありますが、私が使用するパスやUri形式が何であれ、背景は変更されません。Image/ImageBrushをコードの後ろから添付する

私はここでstackoverflowで多くの質問を見てきましたが、私の単一の問題は解決しません。 は、私は以下のコードましょう:画像を添付しようとしたとき、私は同じ問題に直面しています

  if (callback.liveUvis.ContainsUVI(uvi)) 
      { 
       this.Status.Text = "LIVE"; 


       ImageBrush imgB = new ImageBrush(); 
       BitmapImage btpImg = new BitmapImage();      
       btpImg.UriSource = new Uri(@"///IMG///Live///bck_frame_info_video_live.png", UriKind.Relative); 
       //imgB.ImageSource = new BitmapImage(new Uri("~/IMG/Live/bck_frame_info_video_live.png", UriKind.RelativeOrAbsolute)); 
       //imgB.ImageSource = new BitmapImage(new Uri("ms-appx:///IMG/Live/bck_frame_info_video_live.png")); 
       imgB.ImageSource = btpImg; 
       this.Background = imgB; 
      } 

を...私はそれがまた、ウリ形式までだと思うが、私は念のためにあまりにもコードをしてみましょう: )

private void setIcon_Desc(string dd) 
    { 
     try 
     { 
      Image img = new Image(); 
      img.Source = new BitmapImage(new Uri(this.BaseUri, "IMG/pictos_small/white/160dpi/" + dd + ".png")); 
      img.Stretch = Stretch.None; 
      this.Icon = img; 
      this.Sport.Text = callback.disc.getDescription(dd).ToUpper(); 
     } 
     catch(Exception ex) 
     { 
      callback.exception.writeExceptions(ex); 
     } 

    } 

ありがとうございます!

+0

プロジェクトに含まれる画像ですか?コンパイルアクションが "コンテンツ"に設定されていることを確認してください –

+0

@KooKizはい、私はサブフォルダとプロジェクトの画像を持つフォルダを持っています(私はAndroidではサブフォルダにある画像は使用できませんそれはUWPでも同じです...)。 「ビルドアクションが「コンテンツ」に設定されていることを確認してください」と言うと、イメージは正しいですか? –

+0

はい、ファイルプロパティ(Visual Studioのソリューションエクスプローラで、ファイルを右クリックしてプロパティをクリックすると、「ビルドアクション」という名前のファイルが必要です)。ビルドアクションがcontentに設定されている場合は、 ''のような形式でファイルを開くことができます(つまり、 "" IMG "フォルダのサブフォルダ)。 'Uri'オブジェクトを使用するときには微妙なことがあるので、私が提供したコードを使用してXAMLから直接試してみることをお勧めします –

答えて

4

ユーザーコントロールの背景を変更する際に問題を再現できます。

私が使用した現在の回避策は、コントロールのルートUIElementの背景を変更することでした。

<Grid x:Name="container"> 
    <Grid.Background> 
     <ImageBrush Stretch="Fill" ImageSource="Images/bg-blue.png"/> 
    </Grid.Background> 
    <StackPanel> 
     <TextBlock>Hello World</TextBlock> 
     <Button Click="Button_Click">Change Background</Button> 
     <Image x:Name="display"></Image> 
    </StackPanel> 
</Grid> 

public sealed partial class MyUserControl : UserControl 
{ 
    public MyUserControl() 
    { 
     this.InitializeComponent(); 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     ImageBrush imgB = new ImageBrush(); 

     BitmapImage btpImg = new BitmapImage(); 

     btpImg.UriSource = new Uri(@"ms-appx:///images/bg-light-blue.png"); 

     imgB.ImageSource = btpImg; 

     container.Background = imgB; 
    } 
} 
+0

ありがとう!!!しかし、私はまだアイコンを付けることができません:( –

+0

あなたはUriを新しいUriに変更しましたか( "ms-appx:///IMG/Live/bck_frame_info_video_live.png" )? –

+0

Yess!すでに両方の問題を解決しました。あなたが提案した解決策としての背景:) –

関連する問題