2016-10-11 3 views
0

Ich versuche, ein Bild von einer URL in WPF auf sehr einfache Weise zu laden, aber es funktioniert nicht. Irgendeine Hilfe ? Der Code ist unten:Laden Bild aus dem Web zur Laufzeit in WPF

Haupt XAML

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:WpfApplication1" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="279*"></RowDefinition> 
      <RowDefinition Height="41*">     
      </RowDefinition> 
     </Grid.RowDefinitions> 
     <Image x:Name="image1" Grid.Row="0"></Image> 
     <TextBox Grid.Row="1" Margin="0,0,10,0"></TextBox> 

    </Grid> 
</Window> 

-Code-behind

public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 

      InitializeComponent(); 

      var bi = new BitmapImage(); 
      bi.BeginInit(); 
      bi.UriSource = new Uri("http://www.clipartkid.com/images/817/pic-of-german-flag-clipart-best-VkuN37-clipart.jpeg"); 
      bi.EndInit(); 

      //var img = new Image(); 
      image1.Source = bi; 
     } 
    } 
+0

Der Code ist in Ordnung, und arbeitet für mich. Sie können vielleicht Ihre Firewall-Einstellungen überprüfen. Als Anmerkung müssen Sie BeginInit und EndInit nicht aufrufen. 'image1.Source = new BitmapImage (new Uri (...))' funktioniert auch. – Clemens

+0

Zustimmen, es funktioniert auch für mich :) – GetFuzzy

+0

Nur ein Kopf hoch. Keine gute Idee. Was ist die Person ist nicht online oder hat eine langsame Verbindung? Warum die Latenz zur Anwendung hinzufügen? – SledgeHammer

Antwort

0

in der Tat lustig! Funktioniert jetzt gut in meinem anderen Laptop. Muss etwas mit den Firewall-Einstellungen sein. Und ja, ich habe die Dinge jetzt noch einfacher gemacht. Binden der Quelle des Bildes in XAML an eine String-Eigenschaft, die ich in einer ViewModel-Klasse festgelegt habe.

<Image x:Name="image1" Source ="{Binding MyPic}" Grid.Row="0"></Image> 

class MyViewModel 
    { 
     public string MyPic { 
      get { return @"http://www.clipartkid.com/images/817/pic-of-german-flag-clipart-best-VkuN37-clipart.jpeg"; } 
     } 
    } 

Danke für die Antworten und für die Verwirrung leid.

-Ron