Я нахожусь в процессе создания настольного приложения на C # с WPF, но я застрял в моем меню.
У меня есть меню левой панели для переключения между функциями.
Я создал одну модель представления с двумя видами, которые должны отображаться в моем главном окне. если я нажимаю на «Мониторинг», представление контента переключается с «Дома» на «Мониторинг», но когда я нахожусь на Мониторинге, если я пытаюсь вернуться на «Домой», это не работает, и я не понимаю, почему.
Под папкой моего проекта
([abc] = папка; - abc = файл):
[PROJECT]
[assets]
- Home.png
- Stats.png
[ViewModels]
- MainWindowViewModel.cs
[Views]
- Home.xaml
- Home.cs
- Stats.xaml
- Stats.cs
- MainWindow.xaml
- MainWindow.cs
- App.xaml
- App.cs
- App.config
Ниже важная часть моего кода:
MainWindow.xaml
<Window.Resources>
<DataTemplate x:Key="HomeViewTemplate" DataType="{x:Type viewmodels:MainWindowViewModel}">
<views:Home DataContext="{Binding}" />
</DataTemplate>
<DataTemplate x:Key="StatsViewTemplate" DataType="{x:Type viewmodels:MainWindowViewModel}">
<views:Stats DataContext="{Binding}" />
</DataTemplate>
</Window.Resources>
<Grid Grid.Row="0" MouseLeftButtonDown="OpenHome">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="70" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<Image Source="/assets/home.png" Height="32" Width="32" />
<Label Content="Home" Grid.Column="1" Foreground="White" FontSize="12" VerticalAlignment="Center" Padding="0,5,5,5" />
</Grid>
<Grid Grid.Row="1" MouseLeftButtonDown="OpenStats">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="70" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<Image Source="/assets/stats.png" Height="32" Width="32" />
<Label Content="Monitoring" Grid.Column="1" Foreground="White" FontSize="12" VerticalAlignment="Center" Padding="0,5,5,5" />
</Grid>
<Grid Grid.Row="1">
<ContentControl Content="{Binding }">
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Setter Property="ContentTemplate" Value="{StaticResource HomeViewTemplate}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Route}" Value="Home">
<Setter Property="ContentTemplate" Value="{StaticResource HomeViewTemplate}" />
</DataTrigger>
<DataTrigger Binding="{Binding Route}" Value="Stats">
<Setter Property="ContentTemplate" Value="{StaticResource StatsViewTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</Grid>
MainWindow.cs
private MainWindowViewModel MV = new MainWindowViewModel();
public MainWindow()
{
InitializeComponent();
}
private void OpenHome(object sender, RoutedEventArgs e)
{
MV.Route = "Home";
DataContext = MV;
}
private void OpenStats(object sender, RoutedEventArgs e)
{
MV.Route = "Stats";
DataContext = MV;
}
ViewModels> MainWindowViewModel.cs
public class MainWindowViewModel
{
public string Route
{
get;
set;
}
public MainWindowViewModel(){}
}