2015-10-15 23 views
5

Próbuję dodać obraz jako tło UserControl. W zależności od wartości zmiennej muszę zmienić to tło, ale niezależnie od ścieżki lub formatu Uri, tło się nie zmienia.Dołącz obraz/obrazBrush z kodu za

Widziałem wiele pytań tutaj w stackoverflow, ale żaden nie rozwiązuje mojego pojedynczego problemu. I niech poniższy kod:

  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; 
      } 

Jestem stoi ten sam problem, gdy próbuje dołączyć zdjęcie ... Myślę, że to zależy od formatu Uri również, ale niech ten kod też tylko w przypadku:)

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); 
     } 

    } 

Z góry dziękuję!

+0

Czy obraz zawarty w projekcie? Upewnij się, że akcja kompilacji jest ustawiona na "Zawartość" –

+0

@KooKiz tak, mam folder z podfolderami i obrazami w projekcie (jestem świadomy, że w systemie Android nie można używać obrazów, jeśli znajdują się one w podfolderze, ignoruję je to samo dotyczy UWP ...). Kiedy mówisz "Upewnij się, że działanie budowy jest ustawione na" Treść ", masz na myśli obraz w prawo? –

+0

Tak, we właściwościach pliku (w eksploratorze rozwiązań programu Visual Studio kliknij plik prawym przyciskiem myszy, kliknij właściwości, a plik powinien mieć nazwę "Build Action"). Jeśli akcja kompilacji jest ustawiona na zawartość, powinieneś być w stanie otworzyć plik używając czegoś w stylu '' (to znaczy, jeśli twoje zdjęcie znajduje się w "Live "podfolder folderu" IMG "). Podczas używania obiektu 'Uri' może występować kilka subtelności, więc sugeruję najpierw spróbować bezpośrednio z XAML używając kodu podanego –

Odpowiedz

4

Mogę odtworzyć problem podczas zmiany tła kontrolki użytkownika.

Obecne obejście, które stosowałem, zmieniało tło UIElementa głównego w kontrolce.

<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

Wielkie dzięki! Ale nadal nie mogę dołączyć ikon :( –

+0

Czy zmieniłeś Uri na nowy Uri ("ms-appx: ///IMG/Live/bck_frame_info_video_live.png")? –

+0

Yess! Rozwiązałem już obie kwestie. Załączam ikony jako Tło jako proponowane rozwiązanie :) –