Hey, ich bin neu hier und was programmieren angeht ein ziemlicher Anfänger.
Für mein Abschlussprojekt schreibe ich gerade ein Programm für einen SmartMirror. Dieser soll unter anderem einen News-Ticker anzeigen. Ich habe mir hierfür den Dienst Newsapi.org ausgesucht.
https://newsapi.org/docs/client-libraries/csharp
In dieser Anleitung wird beschrieben wie man eine Client-Anfrage stellt und die Ausgabe in der Console ausgibt.
Ich möchte die Ausgabe aber schön übersichtlich in meinem UWP-Frontend dargestellt bekommen und zwar nur den Titel, die Artikelbeschreibung und die Url zum Artikel.
Dazu habe ich schon einmal folgendes Stackpanel in XAML erstellt:
<StackPanel HorizontalAlignment="Left" VerticalAlignment="Bottom" Height="400" Width="400" Margin="10,0,0,349">
<TextBlock Name="TitleTextBlock" FontSize="20" Foreground="White" HorizontalAlignment="Center"/>
<TextBlock Name="ArticleDescriptionTextBlock" FontSize="16" Foreground="White" HorizontalAlignment="Center"/>
<TextBlock Name ="UrlTextblock" FontSize="14" Foreground="White" HorizontalAlignment="Center"/>
</StackPanel>
Der Backend-Code sieht aktuell folgendermaßen aus:
class NewsAPI
{
public static void GetNews(string[] args)
{
var newsApiClient = new NewsApiClient("44c4bd65c88v656f8ffc3811by324e1a");
var articlesResponse = newsApiClient.GetTopHeadlines(new TopHeadlinesRequest
{
PageSize = 5,
Language = Languages.DE,
});
if (articlesResponse.Status == Statuses.Ok)
{
foreach (var article in articlesResponse.Articles)
{
//article.Title;
//article.Description;
//article.Url;
}
}
}
}
Das was aktuell noch in der foreach Schleife steht soll an die jeweiligen Textblöcke geschickt werden.
D.h. ich möchte 5 Artikel mit Titel, Artikelbeschreibung und URL in meinem XAML Frontend stehen haben.
Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt und ihr könnt mir helfen 😃
Erstelle dir ein NewsViewModel mit den Eigenschaften Title
, Description
und Url
, und leg dir eine Eigenschaft vom Typ ObservableCollection<NewsViewModel>
im MainViewModel an. Diese Liste kannst du dann mit der Rückgabe des News-Clients befüllen und im XAML an ein ItemsControl binden, welches dir die Liste anzeigt.
Siehe dazu: [Artikel] MVVM und DataBinding
Weeks of programming can save you hours of planning