2017-08-27 3 views
0

ある部分クラスの文字列リストを別のクラスからアクセスしようとしています。 は、公共部分クラスのメインウィンドウからリストにアクセスしようとすると:ウィンドウ別の部分クラスから文字列のリストにアクセスする

`

namespace GymCheckList 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 
     private List<string> data1 = new List<string>(); 
     public List<string> Data1 
     { 
      get 
      { 
       return data1; 
      } 
     } 

`

は、私は次のコード

namespace GymCheckList 
{ 
    public partial class ChooseExercises : Window 
    { 

    public List<string> str() 
     { 
      MainWindow myClass = new MainWindow(); 
      List<string> calledList = myClass.Data1; 
      return calledList; 
     } 

しかし、私を使用し、リストを呼び出すにはそれをデバッグすると、calledListの "Count = 0"を取得します。なぜでしょうか?

+1

Ok。私は噛むだろう:これはCのためにタグ付けされている...? – WhozCraig

+1

です。これがカウントです。あなたに値を割り当てていません – AntLaC

+0

@AntLaC私はそれにいくつかの値を割り当てて、それをデバッグするとMainWindowクラスで見ています... – Alex

答えて

1

たびstrは、インスタンスが起動時に(別のインスタンス)開いていたメインウィンドウに入力された任意のデータを持っていないことをMainWindow

public List<string> str() 
{ 
    MainWindow myClass = new MainWindow(); 
    List<string> calledList = myClass.Data1; 
    return calledList; 
} 

の新しいインスタンスを作成し、呼ばれています

Application.Current.MainWindowプロパティを経由してアクセス元のインスタンスを試してみてください

public List<string> str() 
{ 
    MainWindow myClass = (MainWindow)Application.Current.MainWindow; 
    return myClass.Data1; 
} 

これはすばやく不潔な修正です。好ましい方法は、各ビューの共有データを適切に表示するモデルを設定することです。

+0

ありがとうございます!それは私のために働いた! – Alex

0

申し訳ありません申し訳ありませんが、これは初めて表示されませんでした。

private List<string> data1 = new List<string>(); この行には常にnew List<string>()が表示されます。

namespace GymCheckList 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 
     private List<string> data1; 
     public List<string> Data1 
     { 
      get 
      { 
       if(data! == null) data! = new List<string>(); 
       return data1; 
      } 
     } 
関連する問題