2017-10-17 14 views
1

My Listviewは別のウィンドウでデータを送信する場所は更新されませんが、同じウィンドウでデータを送信すると更新されます。ここに私のメインウィンドウリストビューは別ウィンドウのアクション時には更新されません

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(); 
    } 
} 

}ここ

と私はボタン1 メインウィンドウをクリックすると、リストビューが更新されませ

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をクリックしたときに、私はWINDOW1ボタン1、リストビュー更新

方法WINDOW1でリストビューを更新する]をクリックしたとき?

答えて

1

変更この:これに

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); 
    } 

あなたは、フォームウィンドウ1の新しいインスタンスを作成する代わりに、アップデートしたい開いたウィンドウ1にアクセスして行っています。

編集:これはWPFであるので

Application.Currentを使用してみてください。より具体的には、Application.Current.Windows

+0

winform @willyでwpf、Application.Openformを使用しています。David Jr –

+0

申し訳ありませんが、私は自分の答えを更新しました。 –

+0

それが動作します。おかげで@ウィリーデビッドジュニア –

関連する問題