Exemplo n.º 1
0
        void OnChangeViewMessage(ChangeViewMessage message)
        {
            Dispatcher.Invoke(() =>
            {
                var view = (this.FindName(message.ViewName) as UserControl);

                #region Caching for Rooms
                if (message.ViewName == "RoomView")
                {
                    var data = message.Data as RoomSubCategory.Time;
                    var vm   = message.ViewModel as RoomViewModel;
                    if (data != null)
                    {
                        var key = data.CinemaName + data.HallID.ToString();

                        if (RoomViewsCache.ContainsKey(key))
                        {
                            view = RoomViewsCache[key];
                        }
                        else
                        {
                            view = new MiniRoomView();
                            if (vm != null)
                            {
                                view.DataContext = vm;
                                (view as MiniRoomView).Init();
                            }
                            RoomViewsCache.Add(key, view);
                            RootLayout.Children.Add(view);
                        }
                    }
                }
                #endregion

                if (view == null)
                {
                    return;
                }
                if (ActiveView == view)
                {
                    return;
                }


                view.Visibility       = Visibility.Visible;
                ActiveView.Visibility = Visibility.Collapsed;
                ActiveView            = view;

                if (view is IView)
                {
                    (view as IView).OnShow(message.Data);
                }

                ActiveView.Dispatcher.Invoke(() => { }, DispatcherPriority.Render);
            });
        }
Exemplo n.º 2
0
        public void Handle(ChangeViewMessage message)
        {
            if (message.Content == null)
            {
                throw new ArgumentNullException(nameof(message), $"{nameof(message)} cannot be null");
            }

            try
            {
                Screen screen = (Screen)message.Content;
                ActivateItem(screen);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
        // ----- implementace rozhraní IHandle<ChangeViewMessage>

        // zatím nevyužitá metoda, ale hlavní okno je tímto připraveno přijímat požadavky z jiných view modelů na změnu pohledu
        public void Handle(ChangeViewMessage message)
        {
            // Když nějaká třída odešle zprávu ChangeViewMessage, tak ji zachytíme a pracujeme
            // ChangeViewMessage obsahuje název ViewModelu, který zaktivujeme a tím zobrazíme odpovídající pohled
            ActivateItem(GetViewModel(message.ViewModelName));
        }