2017-11-11 91 views
0

我正在嘗試使用單選按鈕和代表進行過濾。基本上我想要一個硬編碼的列表,它會像僞數據庫一樣工作,然後只顯示列表中的某些項目,具體取決於按下哪個按鈕。我無法從另一個類訪問我的列表(可觀察集合)

我有一個Apartment.cs類有一個名稱和ID屬性,沒有別的。

另一類我是Apts.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>)方法我寫的。此代碼是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

在代碼的第一部分中,您將填充「公寓」,即私人公寓,而公共部分仍爲空。然後在第二部分代碼中,您應該初始化「Apt」類以訪問公共公寓。它應該是這樣的:

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

首先你應該學習如何使用屬性。 Using Properties

你必須返回你的屬性getter中的字段,就像這樣,這樣你就可以實現你想要的。

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訪問的性能。但我認爲你使用的語法和我使用的語法是一樣的。你能否詳細說明兩者的區別? – numme27

+0

此外,我收到此錯誤: 'CS0029 \t不能隱式地將類型'System.Collections.ObjectModel.ObservableCollection '轉換爲'System.Func ,System.Collections.Generic.IEnumerable >'\t' – numme27

+0

消息說這一切,你試圖傳遞參數的類型System.Collections.ObjectModel.ObservableCollection 但你的方法是期待另一個('System.Func ,System.Collections.Generic.IEnumerable ) – BladeMaster