Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Session in WPF?

Tags:

c#

session

wpf

In ASP.NET, I can do Session["something"] = something;, and then I can retrieve in another page the value of the session. Is there a Session in WPF that would allow me to do the same in ASP.NET? I notice there is no session in WPF because there is state. Because I got many user control pages, I need to get its values and display it on the MainWindow.

Is there anything similar to Session in WPF?

Some resources say to use cookies. How do I do that? mine Is a WPF application not a WPF web application?

like image 502
what Avatar asked Jul 22 '13 03:07

what


2 Answers

If I understand your question correctly, you just need some kind of global storage for certain values in your program.

You can create a static class with public static properties for the various values that you need to store and be able to globally access inside your application. Something like:

public static class Global
{
    private string s_sSomeProperty;

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

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

    ...
}

This way you can just write Global.SomeProperty anywhere in your code where the Global class is available.

Of course, you'd need validation and - if your application is multithreaded - proper locking to make sure your global (shared) data is protected across threads.

This solution is better than using something like session because your properties will be strongly typed and there's no string-based lookup for the property value.

like image 56
xxbbcc Avatar answered Oct 12 '22 15:10

xxbbcc


One possibility is to use:

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

I wouldn't get into the habit of using that too frequently though. I think it's generally for data that's being stored once (such as styles) and then just referenced from other points in the application. Everything in your app reading/writing to some globally shared piece of data is poor practice and could make debugging tough.

like image 41
Grant Winney Avatar answered Oct 12 '22 14:10

Grant Winney