Использование TMDb c# api для передачи информации в TextBlock - PullRequest
0 голосов
/ 29 мая 2020

Кто-нибудь когда-нибудь работал с TMdb для C# раньше?
https://github.com/LordMike/TMDbLib/
Я использую библиотеку API для подключения к моему приложению WPF и хотел бы отобразить некоторые трансляции члены в TextBlock, но каждый раз, когда я использую его, я получаю только одно имя, тогда как согласно API я должен получать намного больше имен. Я использую foreach l oop вот так;

foreach (Cast cast in movie.Credits.Cast)
            {
                MovieCast = cast.Name;
            }

Не знаю, может я что-то делаю не так?
Вот полный код;
ViewModel

#region Fields

        private Window mWindow;

        #endregion

        #region Properties

        public string MovieName { get; set; }

        public string MovieDescription { get; set; }

        public string MovieCast { get; set; }

        public string MovieImage { get; set; }

        #endregion

        #region Commands

        /// <summary>
        /// The command to close the window
        /// </summary>
        public ICommand CloseCommand { get; set; }

        /// <summary>
        /// The command to minimize the window
        /// </summary>
        public ICommand MinimizeCommand { get; set; }

        /// <summary>
        /// The command to maximize the window
        /// </summary>
        public ICommand MaximizeCommand { get; set; }
        #endregion

        #region Constructor
        /// <summary>
        /// Main Constructor
        /// </summary>
        public MainWindowViewModel(Window window)
        {
            mWindow = window;

            // Window Buttons Commands
            CloseCommand = new RelayCommand(() => mWindow.Close());
            MinimizeCommand = new RelayCommand(() => mWindow.WindowState = WindowState.Minimized);
            MaximizeCommand = new RelayCommand(() => mWindow.WindowState ^= WindowState.Maximized);

            //This is The Movie Database API Client
            TMDbClient client = new TMDbClient("c807e25e9945dcb331636165896edb32");
            Movie movie = client.GetMovieAsync("141052", MovieMethods.Credits | MovieMethods.Images).Result;

            MovieName = movie.Title;
            MovieDescription = movie.Overview;
            foreach (ImageData image in movie.Images.Backdrops)
            {
                MovieImage = "https://image.tmdb.org/t/p/original"+image.FilePath;
            }

            foreach (Cast cast in movie.Credits.Cast)
            {
                MovieCast = cast.Name;
            }

        }
        #endregion
    }

Часть XAML

                                    <TextBlock Text="{Binding MovieName}" FontSize="40" FontWeight="Bold"/>
                                    <TextBlock Text="{Binding MovieDescription}" FontSize="15" FontWeight="DemiBold" TextWrapping="Wrap" Width="700" HorizontalAlignment="Left"/>
                                    <TextBlock Text="{Binding MovieCast}" FontSize="14"/>

1 Ответ

0 голосов
/ 29 мая 2020

, даже если movie.Credits.Cast имеет много элементов, MovieCast переназначается в al oop и будет последним из них. используйте коллекцию, например, ObservableColection<string>, и отобразите ее в ItemsControl или, альтернативно, объедините все элементы в одну строку, которая может отображаться в TextBlock:

MovieCast = string.Join(Environment.NewLine, movie.Credits.Cast);
...