c# - 使用静态参数切换(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");
解决方案
除非必须,否则不要使用静态的东西。注入服务(注册为单例),并将您的信息存储在那里。
推荐阅读
- bigcommerce - 我如何从结帐页面 Bigcommerce 中隐藏“税款”
- javascript - 如何从 google appscript 中的另一个 html 页面调用另一个 HTML 页面
- c++ - 如何读取带有方括号的 Json 字符串?
- python - 如何在 python 3 中向 SHA256 提供十六进制输入?
- php - 在 woocommerce_before_calculate_totals 挂钩中获取购物车小计
- ms-word - 使用 OpenXML 在 MS Word 中添加/更新 TOC 时出现问题
- android - 使用 Koin 在运行时切换基本 url
- r - 从现有数据框列分配行名时出错
- visual-studio-code - 自定义模式的 Ctrl+Mouseover 上的自定义超链接
- javascript - 从 Jquery Returned Object 获取每个对象的返回数据