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

WPF中如何通过App.Current获取App.xaml.cs的非静态字段?

报错原因

App.Current的默认返回类型是WPF提供的Application基类,你自定义的IsUserLoggedIn属性是定义在自己写的App派生类中的,基类本身不包含这个成员,直接通过基类类型的引用调用派生类独有的成员,就会触发编译错误。

修复方案

方案1:临时强转(单次使用推荐)

直接在调用位置把App.Current显式转换为你项目中的App类型即可,修改EventTable.cs的代码如下:

internal class EventTable
{
    private void UpdateEvents()
    {
        if (((App)App.Current).IsUserLoggedIn)
        {
            // 此处写登录后的业务逻辑
        }
    }
}

方案2:新增类型化静态属性(多处调用推荐)

如果项目里很多地方都要访问App类的自定义成员,可以直接在App.xaml.cs里加一个静态属性,提前做好类型转换,后续所有地方调用都不需要重复写强转逻辑:
首先修改App.xaml.cs的代码:

public partial class App : Application
{
    // 新增强转后的当前实例静态访问属性
    internal new static App Current => (App)Application.Current;
    
    internal bool IsUserLoggedIn { get; private set; }
}

之后所有类里访问时直接用下面的写法即可,不会再触发编译错误:

if (App.Current.IsUserLoggedIn)
{
    // 业务逻辑
}

说明:WPF默认启动流程下,Application.Current一定会被初始化为你自定义的App类实例,正常开发场景下不会出现类型转换失败的问题,可以放心使用。

内容的提问来源于stack exchange,提问作者Soerx

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 16:33:26