具有多页的WPF / c#项目的全局变量

时间:2017-04-28 19:53:58

标签: c# wpf

我正在开发一个使用WPF / c#开发桌面应用程序的项目,并在数据库中存储了一些配置。我想将这些配置从数据库加载到数组(例如,用户安全性priveleges),以在所有页面上的所有项目中使用主题。我没有每次都对数据库进行查询调用,而是想在打开应用程序时加载它们一次。那么,如何在所有c#文件中创建一个数组或任何变量(int或string),这些文件对应于我在项目中的所有页面/帧。

1 个答案:

答案 0 :(得分:1)

如果您希望它在启动时立即发生,您可以转到App.xaml.cs文件(默认位置是项目根文件夹)并向构造函数添加一个函数来加载全局变量。如果您希望用户输入登录凭据,您可以相应地移动LoadUserPermissions方法并让它从那里更新全局变量。

public static class Globals
{
    public static int UserId;
    public static string UserGroup;
}

public partial class App : Application
{
    public App()
    {
        LoadUserPermissions();
    }

    public void LoadUserPermissions()
    {
        string username = Environment.UserDomainName;
        DBClass db = new DBClass();
        Globals.UserId = db.GetUserIdFromDatabase(username);
        Globals.UserGroup = db.GetUserGroupFromDatabase(username);
    }
}

您必须更新此内容以匹配您的授权模型,无论是域驱动还是数据库驱动。上面的例子是域驱动的。