首页 > 解决方案 > 使用静态参数切换(c#,WPF)

问题描述

我正在开发一个包含 2 个页面(主页、详细信息页面)的应用程序

主页包含多个按钮,我想做的是让详细信息页面知道单击了哪个按钮,以便提供正确的详细信息。

我所做的是声明一个静态变量并从主页访问它

    private void NavigateToDetails(int ButtonNumber)
    {
        _regionManager.RequestNavigate("ContentRegion", "DetailsPage");
        DetailsPageViewModel.CurrentPage = ButtonNumber;
    }

- On Detail page :

    private static int _currentPage;
    public static int CurrentPage
    {
        get { return _currentPage; }
        set
        {
            _currentPage = value;
                OnStaticPropertyChanged("CurrentPage");
        }
    }

如果我将这个静态变量绑定到标签它可以工作,但是如果我在一个方法上使用它,它每次都返回 0,这就是我想要它做的事情:

    private void ValuesRefreshed(object sender, EventArgs e)
    {

        switch (_currentPage)
        {
            case 1:
                Name = ModelDb1.Name
                break;
            case 2:
                Name = ModelDb2.Name
                break;
            default:
                Name = "not found"
                break;
        }
    }

解决了

更新我刚刚意识到我在修改静态之前调用了页面,所以我所要做的就是将 NavigateToDetails 重写为

DetailsPageViewModel.CurrentPage = ButtonNumber;            
_regionManager.RequestNavigate("ContentRegion", "DetailsPage");
    

标签: c#wpfstaticprism

解决方案


除非必须,否则不要使用静态的东西。注入服务(注册为单例),并将您的信息存储在那里。


推荐阅读