2014-06-05 177 views
0

我嘗試綁定鏡頭的對象列表,我想在我的代碼我combobox.My列表中顯示的LensName屬性包含對象,但組合框保留爲空或屬性不display.I已經嘗試過已知結合我的數據,而不result.Thanks的所有方式幫助WPF綁定的ObservableCollection到組合框

的XAML

<ComboBox x:Name="RightbestlensCombo" ItemsSource="{Binding Source=RightBestLensList}" DisplayMemberPath="LensName" SelectedValuePath="LensTypeId" /> 
    <ComboBox x:Name="LeftbestlensCombo" ItemsSource="{Binding Source=LefttBestLensList}" DisplayMemberPath="LensName" SelectedValuePath="LensTypeId" ></ComboBox> 

代碼

 public ObservableCollection<OphtalboxIA.Lens> RightBestlensList = new ObservableCollection<OphtalboxIA.Lens>(); 
     public ObservableCollection<OphtalboxIA.Lens> LeftBestlensList = new ObservableCollection<OphtalboxIA.Lens>(); 


if (OphtalboxIA.OphtalboxComputingModule.LeftBestLensList != null) 
       { 
        if (OphtalboxIA.OphtalboxComputingModule.LeftBestLensList.Count > 0) 
        {   
         LeftBestlensList=new ObservableCollection<OphtalboxIA.Lens>(OphtalboxIA.OphtalboxComputingModule.LeftBestLensList); 
        //LeftbestlensCombo.ItemsSource = LeftBestlensList; 

        } 
       } 

       if (OphtalboxIA.OphtalboxComputingModule.RightBestLensList != null) 
       { 
        if (OphtalboxIA.OphtalboxComputingModule.RightBestLensList.Count > 0) 
        { 
         RightBestlensList=new ObservableCollection<OphtalboxIA.Lens>(OphtalboxIA.OphtalboxComputingModule.RightBestLensList); 
         //RightbestlensCombo.ItemsSource = RightBestlensList; 

        } 
       } 

我班鏡頭後面

[XmlInclude(typeof(Lens))] 
    public class Lens{ 

     public String LensName; 
     public String LensType; 
     public String LensTypeTrial; 
     public float Diameter; 
     public float Radius; 
     public float Sphere; 
     public float Cylinder; 
     public int Axis; 
     public String Addition; 
     public String Description; 
     public int isRX; 
     public int isOphtalBox; 
     public int priorityOrder; 
     public int LensFrequencyId; 
     public string LensFrequencyName; 
     public int LensTypeId; 
     public int LensMaterialId; 
     } 
+0

的性能得到綁定後填充?如果是這樣的話,原因是你的Lens類沒有實現INotifyPropertyChanged。這需要將值查看,在這種情況下,需要組合框,爲了實現該接口得到通知價值的任何變化,以便它可以拉他們查看。 – pushpraj

+0

無屬性已填充...然後我綁定... –

回答

1

您需要屬性,而不是字段。這些字段:

public ObservableCollection<OphtalboxIA.Lens> RightBestlensList = new ObservableCollection<OphtalboxIA.Lens>(); 
public ObservableCollection<OphtalboxIA.Lens> LeftBestlensList = new ObservableCollection<OphtalboxIA.Lens>(); 

爲屬性,它們應該是這樣的:

private readonly ObservableCollection<OphtalboxIA.Lens> _rightList = new ObservableCollection<OphtalboxIA.Lens>(); 
private readonly ObservableCollection<OphtalboxIA.Lens> _leftList = new ObservableCollection<OphtalboxIA.Lens>(); 

public ObservableCollection<OphtalboxIA.Lens> RightBestlensList { get { return _rightList; }} 
public ObservableCollection<OphtalboxIA.Lens> LeftBestlensList { get { return _leftList; }} 

此外,你有你的綁定一個錯字:Source=LefttBestLensList。 (一個額外的「t」)和外殼是錯誤的(「......鏡頭......」與「......鏡頭......」)。

0

RightBestlensListLeftBestlensList必須在視圖模型類,而不是在後面的代碼,他們必須是一個性質。

+0

爲什麼花時間來回答一個問題,但把這麼小的努力成嗎?你有沒有看到Stack overflow提供的通常的高質量答案?你爲什麼會用你的單句回答來破壞這個答案,而這個答案也可能是評論? – Sheridan

0

你一定要試試下面menioned代碼。

你有你的視圖模型像

private ObservableCollection<Lens> _RightBestLensList = new ObservableCollection<Lens>(); 

    public ObservableCollection<Lens> RightBestLensList 
    { 
     get { return _RightBestLensList; } 
     set { _RightBestLensList = value; RaisePropertyChanged("RightBestLensList"); } 
    } 

以聲明的ObservableCollection你的鏡頭類應該是

[XmlInclude(typeof(Lens))] 
public class Lens 
{ 
    public string LensName { get; set; } 
    public string LensType { get; set; } 

}