IamBlessed Ответов: 1

Привязка навигации фрейма WPF с помощью MVVM


Привет, ребята, у меня есть приложение WPF, которое использует шаблон MVM. В приложении у меня есть фрейм, который размещает мои страницы a и b, однако когда я меняю вид со страницы a на b и пытаюсь изменить свой вид обратно на страницу a, он не приносит мне новую страницу, а возвращает страницу a со своим старым состоянием. Как я могу это остановить? Ниже приведен мой код как для xaml, так и для модели представления

код XAML

<MenuItem Header="Operator" Visibility="{Binding Path=MenuVisibility, Converter={StaticResource BooleanToVisibilityConverter}}"

                          Command="{Binding Path=ViewMenuCommand}" />

<Frame Grid.Row="1" Name="MainAPpFrame" NavigationUIVisibility="Hidden"

                Source="{Binding Path=DisplayPage, Mode=TwoWay}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" />


моя модель представления

private Page displayPage;

        public Page DisplayPage
        {
            get
            {
                return displayPage;
            }
            set
            {
                if (displayPage == value)
                {
                    return;
                }

                this.displayPage = value;
                base.OnPropertyChanged("DisplayPage");
            }
        }

public ICommand ViewMenuCommand
        {
            get
            {
                if (_operatorViewMenuCommand == null)
                {
                    _operatorViewMenuCommand = new RelayCommand(
                        param => this.ProcessNavRequest());
                }
                return _operatorViewMenuCommand;
            }
        }

private void ProcessNavRequest()
        {
            //string uri = String.Format("/View/{0}", parameter);
            this.DisplayPage = new OperatorView();
        }

1 Ответов

Рейтинг:
1

Βασίλειος Βαλασίδης

private Page _displayPage;

       public Page DisplayPage
       {
           get
           {
               return _displayPage;
           }
           set
           {
               if (Equals(_displayPage, value))
               {
                   return;
               }

               this._displayPage = value;
               OnPropertyChanged("DisplayPage");
           }
       }


       private RelayCommand _operatorViewMenuCommand;
       public ICommand ViewMenuCommand
       {
           get
           {
               if (_operatorViewMenuCommand == null)
               {
                   _operatorViewMenuCommand = new RelayCommand(param => this.ProcessNavRequest(DisplayPage));
               }
               return _operatorViewMenuCommand;
           }
       }
       public void ProcessNavRequest(Page page)
       {
           //string uri = String.Format("/View/{0}", parameter);
           this.DisplayPage = page;
       }


Я звоню из моей команды

StartScreenViewModel.ProcessNavRequest(new ImportForm());


Но он не помнит навигации


Richard Deeming

Если вы хотите задать вопрос, то ЗАДАВАТЬ ВОПРОС[^].

НЕ разместите свой вопрос как "решение" чужого вопроса!