2016-04-26 6 views
2

Ich fordere Daten über das Internet und in der Regel binden sie in XAML.Anzeige Bild basierend auf Daten über das Internet für Windows-Telefon

Jetzt habe ich Schwierigkeiten, auf diese empfangenen Daten zuzugreifen, sie zu manipulieren und in der Benutzersteuerung anzuzeigen.

public partial class FullQuestionUserControl : UserControl 
    { 
     public FullQuestionUserControl() 
     { 
       InitializeComponent(); 
     } 
    } 

Meine Modellfragen enthält Felder wie id, authorFullName, text, containsImage. Diese

ist, wie ich binden:

<TextBlock Style="{StaticResource TextSmall}" TextWrapping="Wrap" 
     Text="{Binding SelectedQuestion.authorFullName}" /> 

Ich brauche containsImage zu überprüfen. Wenn dies der Fall ist, formatieren Sie eine neue Zeichenfolge mit der ID und zeigen Sie sie an.

Ich weiß, wie das Bild anzuzeigen:

var bi = new BitmapImage(new Uri(url)); 
    this.QuestionImage.Source = bi; 

Alles, was ich brauche, ist die Frage in Benutzersteuercode zu erhalten.

Wie bekomme ich die Daten in Benutzersteuercode?

+0

Sie können tun, was Sie brauchen, Datenbindung statt Code-Behind verwenden, aber Ihre Frage ist nicht sehr klar. Wenn die containsImage-Eigenschaft true ist, müssen Sie die BitmapSource mit einer URL erstellen, die die ID enthält. –

Antwort

2

Dieser Stil wird das Image Source-Eigenschaft, wenn containsImage wahr ist:

<Image> 
    <Image.Resources> 
     <stackoverflow:IdToImageSourceConverter x:Key="IdToImageSourceConverter"/> 
    </Image.Resources> 
    <Image.Style> 
     <Style TargetType="Image"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding SelectedQuestion.containsImage}" Value="True"> 
        <Setter Property="Source" Value="{Binding SelectedQuestion.id, Converter={StaticResource IdToImageSourceConverter}}"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Image.Style> 
</Image> 

Dieser Konverter die ID-Eigenschaft, das Format auf die URL und geben einen Bitmap für die Bildquelle nehmen:

class IdToImageSourceConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     var idValue = value.ToString(); 

     var url = string.Format("http://myurl.com/{0}", idValue); 

     return new BitmapImage(new Uri(url)); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
+0

danke für die Hilfe. Ich habe einen Konverter benutzt, genau wie du es vorgeschlagen hast. Obwohl, Trigger, funktionieren offenbar nicht in Windows Phone. –