コード例 #1
0
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            Dispatcher thredDispatcher = Dispatcher.CurrentDispatcher;

            Action <string> setUpdateMessage = (message) =>
            {
                thredDispatcher.BeginInvoke(
                    (Action <string>) delegate(string s)
                {
                    StatusMessage = s;
                    //totally keeping to the pattern here
                    this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("StatusMessage"));
                },
                    new object[] { message });
            };

            SpotifyControllerAPI.Web.Authentication.Authenticator authenticator = SpotifyControllerAPI.Web.Authentication.Authenticator.GetInstance();

            if (await authenticator.StartAuthenticatedContext(setUpdateMessage))
            {
                LoggedInWindow window = new LoggedInWindow(authenticator);

                window.Show();

                this.Close();

                ViewModelLoggedIn vm = new ViewModelLoggedIn();

                window.DataContext = vm;

                //vm.SelectedTabItem = vm.TabItems.First(x => x.Name == "start");
            }
        }
コード例 #2
0
        private void CommandBindingViewItem_Executed(object sender, System.Windows.Input.ExecutedRoutedEventArgs e)
        {
            SpotifyBaseObject baseObject = null;

            if (e.OriginalSource is FrameworkElement fe)
            {
                if (fe.DataContext is SpotifyBaseObject sbo)
                {
                    baseObject = sbo;
                }
                else if (fe.DataContext is AggregationSearchTrackItem agri)
                {
                    baseObject = agri.Track;
                }


                ViewModelLoggedIn vm = this.DataContext as ViewModelLoggedIn;

                /* unfortunately, the generic method doesnt recognize the derived type of the SpotifyBaseObject.
                 * This turns in to a problem if the user tries to reload the view tab (because all derived properties will not be return from DataLoader.GetItemByHref<T>()).
                 * Because of that every type has to be handled explicit*/
                switch (baseObject)
                {
                case null:
                    break;

                case Playlist playlist:
                    vm.ViewSpotifyBaseObject(playlist);
                    break;

                case Album album:
                    vm.ViewSpotifyBaseObject(album);
                    break;

                case User user:
                    vm.ViewSpotifyBaseObject(user);
                    break;

                case Artist artist:
                    vm.ViewSpotifyBaseObject(artist);
                    break;

                /* not sure yet whether to implement a view for track or not */
                //case Track track:
                //    vm.ViewSpotifyBaseObject(track);
                //    break;
                default:

                    throw new Exception($"A object with the type {baseObject.GetType().ToString()} cannot be displayed");
                }
            }
        }