Многостраничность WPF MVVM

Рейтинг: 0Ответов: 0Опубликовано: 11.06.2023

Реализация MVVM проекта. У меня есть главное окно MainWindow.xaml, код ниже. В нём, как видно есть Frame, принимающий значение переменной в качестве контента. Изначально в окне устанавливается главная страница. По нажатию на кнопку должна срабатывать команда, которая открывает другую страницу. Также должен быть переход данных, в данном случае на главной странице есть поле для ввода города, эта строка должна переходить на вторую страницу для дальнейней работы:

<Grid>
        <Frame
            Grid.ColumnSpan="3"
            Grid.RowSpan="3"
            Content="{Binding CurrentPage}"
            NavigationUIVisibility="Hidden"
            Opacity="{Binding Opacity}"
            />
</Grid>

Соответственно для окна указал контекст данных:

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            DataContext = new MainViewModel();
        }
    }

MainViewModel:

internal class MainViewModel : PropertyChangedHelper
    {
        private Page MainPage, WeatherInfo;
        
        private Page currentPage;
        public Page CurrentPage
        {
            get { return currentPage; }
            set
            {
                currentPage = value;
                OnPropertyChanged();
            }
        }

        private double opacity;
        public double Opacity
        {
            get { return opacity; }
            set
            {
                opacity = value;
                OnPropertyChanged();
            }
        }

        /*public ICommand WeatherCityCommand { get; set; }*/
        public ICommand WeatherCityCommand { get; }

        public MainViewModel()
        {
            MainPage = new View.MainPage();
            WeatherInfo = new View.WeatherInfPage();
            WeatherCityCommand = new RelayCommand(OpenWeatherWindow);

            Opacity = 1;
            CurrentPage = MainPage;
        }

        public void OpenWeatherWindow()
        {
            CurrentPage = WeatherInfo;
        }
    }

Команда в принципе не срабатывает при нажатии на кнопку, поэтому окно не открывается. Что я делаю не так? MainPage.xaml:

<TextBox
                    materialDesign:TextFieldAssist.HasClearButton="True"
                    FontFamily="Jura"
                    Background="{DynamicResource Secondary}"
                    Foreground="{DynamicResource BackgroundText}"
                    FontWeight="Bold"
                    Height="25"
                    Width="174"
                    Margin="17,15,15,0"
                    FontSize="15"
                    HorizontalContentAlignment="Center"
                    materialDesign:HintAssist.Hint="Ваш город"/>

                <Button FontWeight="Bold" FontFamily="Jura" Content="Узнать погоду" Background="{DynamicResource Focus}" Foreground="{DynamicResource BackgroundText}" Margin="17,24,15,17" FontSize="15" Cursor="Hand" Height="25"
                  Width="174"
                  Command="{Binding WeatherCityCommand}">
                </Button>

Сроки горят, был бы благодарен за быстрый и ценный ответ :)

Ответы

Ответов пока нет.