WPF静态参数切换问题:详情页无法正确获取按钮点击标识
WPF页面间静态变量传值踩坑记录
我最近在开发一个包含主页和详情页的WPF应用,需求是主页点击不同按钮后,详情页能根据点击的按钮展示对应内容。最开始我想到用静态变量传递按钮编号,写了下面的代码:
初始实现代码
主页导航代码
private void NavigateToDetails(int ButtonNumber) { _regionManager.RequestNavigate("ContentRegion", "DetailsPage"); DetailsPageViewModel.CurrentPage = ButtonNumber; }
详情页ViewModel代码
private static int _currentPage; public static int CurrentPage { get { return _currentPage; } set { _currentPage = value; OnStaticPropertyChanged("CurrentPage"); } }
遇到的问题
把这个静态变量绑定到详情页的Label上时是有效的,Label能正确显示按钮编号,但在下面的ValuesRefreshed方法里调用_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; } }
解决方法
后来仔细排查才发现问题出在代码执行顺序上:我先导航到详情页,再去修改静态变量。这会导致详情页初始化时,静态变量还没被赋值,ValuesRefreshed方法执行时拿到的是初始值0。调整顺序后问题就解决了:
DetailsPageViewModel.CurrentPage = ButtonNumber; _regionManager.RequestNavigate("ContentRegion", "DetailsPage");
内容的提问来源于stack exchange,提问作者Imad Boucetta
相关产品推荐
相关产品推荐

