Laden...

HTTP-Response von WebAPI an XAML Textblock binden?

Erstellt von drizzle0815 vor 4 Jahren Letzter Beitrag vor 4 Jahren 907 Views
D
drizzle0815 Themenstarter:in
1 Beiträge seit 2020
vor 4 Jahren
HTTP-Response von WebAPI an XAML Textblock binden?

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 😃

5.658 Beiträge seit 2006
vor 4 Jahren

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