Ci sono diversi modi per caricare una immagine.... eccone alcuni:
  1) includere l'immagine nel progetto, settare nelle proprietà dell'immagine "Build Action" su "Resource" e "Do not copy":
  <Image x:Name="imgPic" Source="images/Babba.jpg" />
  In questo caso l'immagine sarà embeddata nel nostro assembly.
   
  2) stesso esempio ma fatto da codice: 
      private void OnLoad(object sender, RoutedEventArgs e)
  {
      BitmapImage bitmapImage = new BitmapImage();
      Uri uri = new Uri("images/Babba.jpg", UriKind.Relative);
      bitmapImage.UriSource = uri;
      imgPic.Source = bitmapImage;
  }
 
 
3) settare "Build Action" su "Content" e "Do not copy", in questo modo l'immagine sarà embeddata nello XAP:
  private void OnLoad(object sender, RoutedEventArgs e)
  {
      BitmapImage bitmapImage = new BitmapImage();
      Uri uri = new Uri("/images/Babba.jpg", UriKind.Relative);
      bitmapImage.UriSource = uri;
      imgPic.Source = bitmapImage;
  }
 
 
4) settare "Build Action" su "None" e "Copy always" (o anche "Copy if newer"); in questo caso l'immagine non sarà embeddata ma sarà esterna. Nell'esempio sotto basta copiare l'immagine allo stesso livello dello XAP (nella ClientBin):
  private void OnLoad(object sender, RoutedEventArgs e)
  {
      BitmapImage bitmapImage = new BitmapImage();
      Uri uri = new Uri("/Babba.jpg", UriKind.Relative);
      bitmapImage.UriSource = uri;
      imgPic.Source = bitmapImage;
  }
 
 
 
5) caricare una immagine dal web specificando il tipo di Uri Assoluto:
  private void OnLoad(object sender, RoutedEventArgs e)
  {
      BitmapImage bitmapImage = new BitmapImage();
      Uri uri = new Uri("http://www.ongari.it/Images/BabbaOnLine.jpg", UriKind.Absolute);
      bitmapImage.UriSource = uri;
      imgPic.Source = bitmapImage;
  }
 
 
 
6) caricamento tramite WebClient in modo asincrono per file di grosse dimensioni; nell'esempio sotto riportato, posizionare l'immagine nella ClientBin dove si trova lo XAP:
  private void OnLoad(object sender, RoutedEventArgs e)
  {
      WebClient wc = new WebClient();
      wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
      wc.OpenReadAsync(new Uri("Babba.jpg", UriKind.Relative));
  }
  void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
  {
      if (e.Error == null)
      {
          StreamResourceInfo streamResourceInfo = new StreamResourceInfo(e.Result as Stream, null);
          BitmapImage bitmapImage = new BitmapImage();
          bitmapImage.SetSource(streamResourceInfo.Stream);
          imgPic.Source = bitmapImage;
      }
  }
 
 
7) caricamento da un file ZIP scaricato tramite WebClient; nell'esempio sotto riportato, posizionare lo ZIP nella ClientBin dove si trova lo XAP:
  private void OnLoad(object sender, RoutedEventArgs e)
  {
      WebClient wc = new WebClient();
      wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
      wc.OpenReadAsync(new Uri("MioZippone.zip", UriKind.Relative), "Babba.jpg");
  }
  void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
  {
      if (e.Error == null)
      {
          StreamResourceInfo stream1 = new StreamResourceInfo(e.Result as Stream, null);
          String uri = e.UserState as String;
          StreamResourceInfo stream2 = Application.GetResourceStream(stream1, new Uri(uri, UriKind.Relative));
          BitmapImage bitmapImage = new BitmapImage();
          bitmapImage.SetSource(stream2.Stream);
          imgPic.Source = bitmapImage;
      }
  }
 
 
8) caricamento da percorso locale:
  private void OnLoad(object sender, RoutedEventArgs e)
  {
      OpenFileDialog d = new OpenFileDialog();
      d.Filter = "Immagini (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|Tutti i files (*.*)|*.*";
      if (d.ShowDialog() == true)
      {
          Stream stream = d.SelectedFile.OpenRead();
          BitmapImage bitmapImage = new BitmapImage();
          bitmapImage.SetSource(stream);
          imgPic.Source = bitmapImage;
          stream.Close();
      }
  }