Многостраничность WPF MVVM
Реализация 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>
Сроки горят, был бы благодарен за быстрый и ценный ответ :)
Источник: Stack Overflow на русском