The WasteViewModel simply holds references to existing ViewModels that provide existing data. This data is recycled into the WasteViewModel View, because its sole purpose is to bring this other data together and perform some simple math.
Наследование: BaseViewModel
Пример #1
0
        /// <summary>
        /// Constructs a new Waste view with the corresponding view model.
        /// </summary>
        /// <param name="viewModel">
        /// The view model for this view.
        /// </param>
        /// <exception cref="ArgumentException">
        /// In the event that the supplied WasteViewModel is null, will throw ArgumentException.
        /// </exception>
        public Waste(WasteViewModel viewModel)
        {
            InitializeComponent();

            m_viewModel = viewModel;

            if (m_viewModel == null)
            {
                throw new ArgumentException("Expected valid WasteViewModel instance.");
            }

            DataContext = m_viewModel;
        }
Пример #2
0
        /// <summary>
        /// Inits all the various views for the application, which will be pushed and popped on the
        /// primary window as requested or required.
        /// </summary>
        private void InitViews()
        {
            if (m_filteringEngine == null)
            {
                throw new Exception("Engine must be initialized prior to initializing views, as views require references to allow user control.");
            }

            // We null check, because if the save state load worked, these conditions will be
            // false and we won't overwrite our restored state.

            // This collection is initialized here because it has a direct connection to the UI.
            if (m_filteredApplicationsTable == null)
            {
                m_filteredApplicationsTable = new ConcurrentDictionary<string, FilteredAppModel>();
            }

            if (m_modelDashboard == null)
            {
                m_modelDashboard = new DashboardModel(m_filteringEngine);
            }

            if (m_viewModelDashboard == null)
            {
                m_viewModelDashboard = new DashboardViewModel(m_modelDashboard);
            }

            if (m_modelStatistics == null)
            {
                m_modelStatistics = new StatisticsModel();
            }

            if (m_viewModelStatistics == null)
            {
                m_viewModelStatistics = new StatisticsViewModel(m_modelStatistics);
            }

            if (m_modelSettings == null)
            {
                m_modelSettings = new SettingsModel();
            }

            if (m_viewModelSettings == null)
            {
                m_viewModelSettings = new SettingsViewModel(m_modelSettings);
            }

            if(m_viewModelWaste == null)
            {
                m_viewModelWaste = new WasteViewModel(m_viewModelSettings, m_viewModelDashboard);
            }

            // Necessary because we use a background worker. This thread != UI thread.
            Current.Dispatcher.BeginInvoke(
                System.Windows.Threading.DispatcherPriority.Normal,
                (Action)delegate ()
                {
                    m_modelStatistics.FilterCategories = m_filteringCategoriesObservable;
                    m_modelSettings.FilterCategories = m_filteringCategoriesObservable;

                    m_primaryWindow = new MainWindow();
                    m_viewProgressWait = new ProgressWait();
                    m_viewStatistics = new Statistics(m_viewModelStatistics);
                    m_viewDashboard = new Dashboard(m_viewModelDashboard);
                    m_viewSettings = new Settings(m_viewModelSettings, new AddCategoryControl(m_filteringEngine));
                    m_viewWaste = new Waste(m_viewModelWaste);

                    m_primaryWindow.ViewChangeRequest += OnViewChangeRequest;
                    m_viewDashboard.ViewChangeRequest += OnViewChangeRequest;
                    m_viewStatistics.ViewChangeRequest += OnViewChangeRequest;
                    m_viewSettings.ViewChangeRequest += OnViewChangeRequest;
                    m_viewWaste.ViewChangeRequest += OnViewChangeRequest;

                    // Listen for the statistics view requests for app-wide stats deletion.
                    m_viewStatistics.ClearStatisticsRequested += OnClearAllStatsRequest;

                    MainWindow = m_primaryWindow;
                }
            );
        }