我想要以下内容:
public static class A
{
//do something
UpdateListOnMainForm()
}
我已经知道我可以通过Events执行此操作,我尝试创建一个事件,但我不需要任何参数,我只是想要如果A类调用ListView正在更新其数据的事件。
有人可以帮我创建此活动吗?或者也许有更好的方法?
提前谢谢!
编辑:当我更改了ListView从中获取数据的列表(其他类)时,至少我正在尝试更新ListView。
答案 0 :(得分:0)
根据我的理解,您希望静态类能够触发主窗体以通过事件更新其列表视图,而无需专门了解主窗体。我就是这样做的:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
SingletonA.GetInstance.MyEvent += UpdateListView;
}
private void UpdateListView(object sender, EventArgs e)
{
// Update your listview
}
}
//lazy initialization of singleton - not thread safe see http://www.dotnettricks.com/learn/designpatterns/singleton-design-pattern-dotnet for other thread safe version
public class SingletonA
{
private static SingletonA instance = null;
private SingletonA() { }
public event EventHandler<EventArgs> MyEvent;
void TellFormToUpdateListView()
{
MyEvent?.Invoke(typeof(SingletonA), EventArgs.Empty);
}
public static SingletonA GetInstance
{
get
{
if (instance == null)
instance = new SingletonA();
return instance;
}
}
}