2017-11-11 4 views
0

ラジオボタンとデリゲートを使ってフィルタリングをしようとしています。基本的には、ハードコードされたリストを擬似データベースのように動作させ、そのボタンが押されたかどうかに応じてリストからいくつかのアイテムを表示するだけです。他のクラスの私のリスト(観測可能なコレクション)にアクセスできない

私は名前とIDプロパティを持つApartment.csクラスを持っています。 (私は間違っている?)私はリストでなければなりませんアパートプロパティにアクセスしようとしています

public class Apts 
{ 
    private ObservableCollection<Apartment> apartments; 
    public ObservableCollection<Apartment> Apartments { get; set; } 


    public Apts() 
    { 
     apartments = new ObservableCollection<Apartment>() 
     { 
      new Apartment() {Name = "Name1", ID = 1}, 
      new Apartment() {Name = "Name2", ID = 2}, 
      new Apartment() {Name = "Name3", ID = 3}, 
     }; 
    } 
} 

と私が書いたListParis(ObservableCollection<Apartment>)メソッドにパラメータとして渡し:私が持っている

別のクラスはApts.csです。このコードは、MainPage.xaml.cs

public void AssignDelegates() 
{ 
    if (parisButton.IsPressed) 
    { 
     myFunc = DelActions.ListParis(Apartments); 
    } 
} 

であるが、私はエラーが言ってます:

CS0103 The name 'Apartments' does not exist in the current context 

は、なぜ私は、リストにアクセスすることはできませんか?

答えて

0

コードの最初の部分では、「アパートメント」はプライベートなもので、公共のものはまだ空です。その後、コードの2番目の部分では、 "Apt"クラスを初期化して、公共のアパートメントにアクセスする必要があります。これは次のようにする必要があります。

myFunc = DelActions.ListParis(new Apts().Apartments); 
0

まずはプロパティの使い方を学ぶ必要があります。 Using Properties

このように、あなたの財産ゲッターの内側にフィールドを戻す必要があります。

public class Apts 
    { 
     private ObservableCollection<Apartment> apartments; 
     public ObservableCollection<Apartment> Apartments 
     { 
      get 
      { 
       return apartments; 
      } 
      set 
      { 
       apartments = value; 
      } 
     } 

     public Apts() 
     { 
      apartments = new ObservableCollection<Apartment>() 
       { 
        new Apartment() {Name = "Name1", ID = 1}, 
        new Apartment() {Name = "Name2", ID = 2}, 
        new Apartment() {Name = "Name3", ID = 3}, 
       }; 
     } 
    } 

そして、第二、あなたはそうのように、パラメータとしてapartmetsを渡すためにあなたの「アプト」クラスを初期化する必要があります。

public void AssignDelegates() 
{ 
    if (parisButton.IsPressed) 
    { 
     Apts apartments = new Apts(); 
     myFunc = DelActions.ListParis(apartments.Apartments); 
    } 
} 
+0

が、私は何とか私は、プロパティのアクセスoを、それを初期化する必要が忘れてしまいました。しかし、私はあなたがプロパティに使用した構文と私が使ったものは同じだと思った。あなたは2つの違いについて詳しく説明できますか? – numme27

+0

はまた、私はこのエラーを取得しています: 'CS0029 \tが暗黙的に変換できませんSystem.Func ' DelegateTestUWP2.Apartment >、System.Collections.Generic.IEnumerable > '\t' – numme27

+0

メッセージには、System.Collections.ObjectModel.ObservableCollection 型のパラメータを渡そうとしていますが、メソッドは次のとおりです。別の( 'System.Func 、System.Collections.Generic.IEnumerable >) – BladeMaster

関連する問題