我在.net 4.5中有一个WPF应用程序 在这个应用程序中,我创建了一个名为“Client”的类。
在我的App.xaml.cs上,我声明并实例化一个Client对象:
public partial class App : Application
{
public static Client obj_myClient;
private void Application_Startup_1(object sender, StartupEventArgs e)
{
obj_myClient = new Client();
}
}
启动后,我将所有客户端加载到DataGrid中,当我进入客户端行(在DataGrid上)时,客户端属性将加载到App.obj_myClient中(带有绑定)。
我可以轻松地修改我的客户端在DataBAse中的保存。
我的问题:当我想创建一个新客户端时,我需要“刷新”我的App.objMyClient对象,所以我使用了:
App.obj_myClient = new Client();
这段代码编译正确,没有崩溃,但它似乎在我的绑定中生成错误数据并且总是出现奇怪的错误(比如非火事件改变等等)。
我认为这与:
有关App.obj_myClient = new Client();
因为如果删除这一行,代码会更好。
请问您对此案有何建议?
非常感谢:)
致以最诚挚的问候,
Nixeus
答案 0 :(得分:1)
您可以执行以下操作以避免静态变量。但是很难说它是否会解决你的问题,因为我们不知道它在做什么。
public class App : Application
{
public Client obj_myClient;
private void Application_Startup_1(object sender, StartupEventArgs e)
{
obj_myClient = new Client();
}
}
用法
private void SomeMethod()
{
var someValue = ((App)Application.Current).obj_myClient.WhatEverMethod();
}
答案 1 :(得分:1)
您不需要将客户端对象设置为静态。将其转换为财产。
事件的非激发是,当您创建新的Client对象时,旧对象的订阅将丢失,您必须重新创建它们。