WPF中的会话?

wha*_*hat 14 c# wpf session

在ASP.NET中,我可以做Session["something"] = something;,然后我可以在另一个页面中检索会话的值.WPF中是否有允许我在ASP.NET中执行相同操作的会话?我注意到WPF中没有会话,因为有状态.因为我有很多用户控制页面,我需要获取它的值并在MainWindow上显示它.

WPF中的Session有什么类似的东西吗?

有些资源说使用cookies.我怎么做?我的WPF应用程序不是WPF Web应用程序吗?

xxb*_*bcc 17

如果我正确理解您的问题,您只需要为程序中的某些值提供某种全局存储.

您可以为需要存储的各种值创建具有公共静态属性的静态类,并且能够在应用程序内进行全局访问.就像是:

public static class Global
{
    private string s_sSomeProperty;

    static Globals ()
    {
        s_sSomeProperty = ...;
        ...
    }

    public static string SomeProperty
    {
        get
        {
            return ( s_sSomeProperty );
        }
        set
        {
            s_sSomeProperty = value;
        }
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

这样您就可以Global.SomeProperty在代码中的任何位置编写Global类所在的位置.

当然,您需要验证并且 - 如果您的应用程序是多线程的 - 正确锁定以确保跨线程保护您的全局(共享)数据.

此解决方案比使用会话之类的方法更好,因为您的属性将是强类型的,并且没有基于字符串的属性值查找.


Gra*_*ICA 6

一种可能性是使用:

Application.Current.Resources["something"] = something;
Run Code Online (Sandbox Code Playgroud)

我不会养成过于频繁使用它的习惯.我认为这通常是存储一次的数据(例如样式),然后只是从应用程序中的其他点引用.您的应用程序中读取/写入某些全局共享数据的所有内容都是不好的做法,可能会使调试变得困难.