如何在wpf中的整个应用程序中使用loginid值

时间:2012-12-30 03:38:07

标签: wpf

我有一个应用程序,其中userid应该在Wpf中的所有表单中可用。我写了这样的代码

在form1中,我这样写了

 var login =
                    context.Logins.FirstOrDefault(
                        x => x.EmailAddress == email && x.Password == password);
                if (login != null)
                {
                    fp.Show();
                    Application.Current.Properties["UserId"] = login.Id; 
                    Close();
                }

在form2中我应该可以访问用户ID,所以我写了这样的代码

 var  userid = (int) Application.Current.Properties["UserId"];
        int id = userid;

我收到系统空引用异常:{“对象引用未设置为对象的实例。”}

任何帮助

1 个答案:

答案 0 :(得分:0)

它适用于我的简单配置,你的代码中还有其他一些我不确定的东西。这是我的测试代码,看看你能不能破解它。我使用计时器只是为了验证关闭你的主表单没有杀死设置。我不确定你的表格fp是否是你打电话给form2的表格,但如果是你需要在你展示它之前保存你的设置,而不是像你现在所做的那样。

<强> MainWindow.xaml.cs

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        Application.Current.Properties["UserId"] = 12;

    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        Window1 win1 = new Window1();
        win1.Show();
        Close();
    }
}

<强>窗口1

public partial class Window1 : Window
{
    System.Windows.Threading.DispatcherTimer tmr = new System.Windows.Threading.DispatcherTimer();
    public Window1()
    {
        InitializeComponent();
        tmr.Interval = new TimeSpan(0, 0, 10);
        tmr.Tick += new EventHandler(tmr_Tick);
        tmr.Start();
    }

    void tmr_Tick(object sender, EventArgs e)
    {
        tmr.Stop();
        var userid = (int)Application.Current.Properties["UserId"];
        int id = userid;
        this.Title = Application.Current.Properties["UserId"].ToString();
    }


}