为了账号安全,请及时绑定邮箱和手机立即绑定

WPF mvvm 路由

WPF mvvm 路由

C#
蛊毒传说 2021-12-25 16:40:32
我正在使用 WPF 在 C# 中创建桌面应用程序,但我被我的菜单卡住了。我有一个左侧面板菜单可以在功能之间切换。我创建了一个带有 2 个视图的视图模型,这些视图需要显示在我的主窗口中。如果我点击监控,内容视图从主页切换到监控,但是当我在监控时,如果我尝试回到主页,它不起作用,我不明白为什么。在我的项目文件夹下面([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下面是我代码的重要部分:主窗口.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>
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

Route通过INotifyPropertyChanged接口实现发送有关属性更改的通知:


public class MainWindowViewModel : INotifyPropertyChanged

{

    public string _Route;

    public string Route

    {

        get { return _Route; }

        set { _Route = value; OnPropertyChanged("Route"); }

    }


    public event PropertyChangedEventHandler PropertyChanged;


    private void OnPropertyChanged(string propertyName)

    {

        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));

    }


    public MainWindowViewModel(){}

}

此类通知将激活 DataTrigger,后者又将更改 ContentTemplate


查看完整回答
反对 回复 2021-12-25
  • 1 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信