17

ASP.NET ではSession["something"] = something;、セッションの値を別のページで取得できます。ASP.NET で同じことができるようにする WPF のセッションはありますか? 状態があるため、WPF にセッションがないことに気付きました。多くのユーザー コントロール ページを取得したため、その値を取得して MainWindow に表示する必要があります。

WPF の Session に似たものはありますか?

一部のリソースでは、Cookie を使用するように指示されています。それ、どうやったら出来るの?mine WPF アプリケーションは WPF Web アプリケーションではありませんか?

4

4 に答える 4

17

あなたの質問を正しく理解できれば、プログラム内の特定の値に対してある種のグローバル ストレージが必要になるだけです。

格納する必要があるさまざまな値の public static プロパティを持つ静的クラスを作成し、アプリケーション内でグローバルにアクセスできます。何かのようなもの:

public static class Global
{
    private string s_sSomeProperty;

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

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

    ...
}

このようにして、クラスが利用可能なGlobal.SomePropertyコード内のどこにでも書くことができます。Global

もちろん、検証と、アプリケーションがマルチスレッドの場合は、グローバル (共有) データがスレッド間で保護されていることを確認するための適切なロックが必要です。

このソリューションは、プロパティが厳密に型指定され、プロパティ値の文字列ベースのルックアップがないため、session などを使用するよりも優れています。

于 2013-07-22T03:17:52.783 に答える
8

1 つの可能性は、次を使用することです。

Application.Current.Resources["something"] = something;

私はそれをあまり頻繁に使用する習慣にはなりません。一般的には、一度保存されたデータ (スタイルなど) がアプリケーションの他のポイントから参照されるだけだと思います。グローバルに共有されたデータの一部に対するアプリの読み取り/書き込みはすべて、不適切な方法であり、デバッグが困難になる可能性があります。

于 2013-07-22T03:22:22.590 に答える