Изменить страницу нажатием кнопки - PullRequest
0 голосов
/ 28 апреля 2020

В моем файле xaml у меня есть

 <Button 
    Command="{Binding LoginCommand}"
 </Button>

<Frame
    Grid.Column="1"
    NavigationUIVisibility="Hidden"
     Content="{Binding CurrentPage, UpdateSourceTrigger=PropertyChanged}">
</Frame>

Мой класс модели представления:

        private readonly LoginPageView _loginPage;  // Page i want to use
        private readonly StartPageView _startPage;
        private Page _currentPage;

        public StartWindowViewModel(LoginPageView loginPage, StartPageView startPage)
        {
            _loginPage = loginPage;
            _startPage = startPage;
            CurrentPage = _startPage;
            LoginCommand = new RelayCommand(OpenLoginPage, _ => true);
        }

        public event PropertyChangedEventHandler PropertyChanged;

        public Page CurrentPage                                  // I'm binding my frame to this property
        {
            get => _currentPage;
            set
            {
                _currentPage = value;
                OnPropertyChanged();
            }
        }

        public RelayCommand LoginCommand { get; set; }

        private void OpenLoginPage(object parameter)
        {
            CurrentPage = _loginPage;
        }

        protected void OnPropertyChanged([CallerMemberName] string name = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
        }

Я хочу изменить страницу, отображаемую в рамке, нажав кнопку. Я не уверен, должен ли я использовать Frame для этого, но, похоже, все в порядке. Проблема в том, что я не обновляю страницу,

1 Ответ

0 голосов
/ 28 апреля 2020

Мое решение не кажется наилучшим:

<Frame
    Grid.Column="1"
    NavigationUIVisibility="Hidden"
    Source="{Binding PageName}">
</Frame>

public string PageName
{
    get => _pageName + ".xaml";
    set
    {
        _pageName = value;
        OnPropertyChanged();
    }
}

Мне не нравится этот способ решения, поэтому я был бы рад, если бы кто-то предложил лучший подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...