Ich bin extrem neu, WP8 in C# zu entwickeln. Ich versuche, eine einfache App zu schreiben, die Daten von einer Webseite abruft, und dann eine TextBlock
kontinuierlich aktualisieren, möglicherweise jede Sekunde.Wie Daten von einer Webseite abgerufen und in Xaml kontinuierlich in Windows Phone 8 angezeigt werden?
Momentan kann ich Daten von der Webseite abrufen, aber TextBlock
kann ich nicht aktualisieren, obwohl ich INotifyPropertyChanged
verwendet habe. Die TextBlock
wird nur einmal beim Start der Anwendung aktualisiert.
Die cs-Datei von MachineData:
public class MachineData : INotifyPropertyChanged
{
public string CurrentValue
{
get
{
return _currentValue;
}
set
{
_currentValue = value;
NotifyPropertyChanged("CurrentValue");
}
}
private string _currentValue;
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
Hier ist der Code, den ich für das Abrufen von Daten verwendet:
foreach (MachineData md in Items)
{
var wc = new WebClient();
wc.DownloadStringCompleted += (sender, e) =>
{
string data = (string)e.Result;
md.CurrentValue = data; // Update the value of machine
wc.DownloadStringAsync(new Uri(address));
};
wc.DownloadStringAsync(new Uri(address));
}
XAML-Snippet:
<DataTemplate>
<StackPanel Margin="0,0,0,17">
<TextBlock Text="{Binding CurrentValue}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
</StackPanel>
</DataTemplate>
U muss möglicherweise 'md.CurrentValue = data; // Aktualisiere den Wert von machine im UI-Thread –