【问题标题】:Switch with static argument (c#,WPF)使用静态参数切换(c#,WPF)
【发布时间】:2018-07-01 23:19:59
【问题描述】:

我正在开发一个包含 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");
    

【问题讨论】:

  • 如何在xaml中绑定静态属性?
  • @ImadBoucetta,从何处以及何时调用ValuesRefreshed? DetailsPageViewModel.CurrentPage 更改后会发生这种情况吗?请也显示该代码
  • 请将您的解决方案移至自己的答案,谢谢。

标签: c# wpf static prism


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 2018-02-03
    • 2020-06-16
    • 2012-03-24
    相关资源
    最近更新 更多