You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:24:32