C# 在另一个窗口中执行操作时,listview不更新
我的Listview不会更新在其他窗口中发送数据的位置,而是在相同窗口中发送数据时更新。这是我的主窗口C# 在另一个窗口中执行操作时,listview不更新,c#,wpf,C#,Wpf,我的Listview不会更新在其他窗口中发送数据的位置,而是在相同窗口中发送数据时更新。这是我的主窗口 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { CNotes.w
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
CNotes.writeLn("Jacob");
}
private void button2_Click(object sender, RoutedEventArgs e)
{
Window1 spl = new Window1();
spl.Show();
}
}
}
这是我的窗口列表视图
public partial class Window1 : Window
{
ObservableCollection<Person> people = new ObservableCollection<Person();
public Window1()
{
InitializeComponent();
people.Add(new Person() { Name = "John" });
people.Add(new Person() { Name = "Jack" });
// Data bind to the listview,
this.lvRcvd.ItemsSource = people;
}
public void writeLn(string s)
{
this.people.Add(new Person { Name = s });
}
private void button1_Click(object sender, RoutedEventArgs e)
{
this.people.Add(new Person { Name = "Jacob" });
}
}
public class Person { public string Name { get; set; } }
static public class CNotes
{
static Window1 fm = new Window1();
static public void writeLn(string s)
{
fm.writeLn(s);
}
}
公共部分类窗口1:窗口
{
ObservableCollection人员=新ObservableCollection更改此项:
static public void writeLn(string s)
{
fm.writeLn(s);
}
为此:
static public void writeLn(string s)
{
Window1 fm = Application.OpenForms.OfType<Window1>().Take(1).SingleOrDefault();
if (fm != null)
fm.writeLn(s);
}
static public void writeLn(字符串s)
{
Window1 fm=Application.OpenForms.OfType().Take(1.SingleOrDefault();
如果(fm!=null)
书面形式(s);
}
您要做的是创建窗体Window1的新实例,而不是访问要更新的打开的Window1
编辑:
由于这是一个WPF,请尝试使用Application.Current
。更具体地说,Application.Current.Windows
我在winform@willy David JR中使用WPF,Application.Openform(很高兴提供帮助:)