2016-09-08 49 views
1

只是想知道爲什麼我的ObservableCollection不綁定到我的組合框 我沒有得到任何錯誤,它只是不填充它。ObservableCollection不綁定到組合框

public class TableList : ObservableCollection<TableName> 
{ 
    public TableList() : base() 
    { 
     Add(new TableName(1, "Notes")); 
     Add(new TableName(2, "TemplateNotes")); 
    } 
} 

public class TableName 
{ 
    private int noteID; 
    private string noteName; 

    public TableName(int ID, string name) 
    { 
     this.noteID = ID; 
     this.noteName = name; 
    } 

    public int NoteID 
    { 
     get { return noteID; } 
     set { noteID = value; } 
    } 

    public string NoteName 
    { 
     get { return noteName; } 
     set { noteName = value; } 
    } 
} 

這是我的XAML

<ComboBox 
    x:Name="noteSaveToSelection" 
    HorizontalAlignment="Left" 
    Height="35" 
    Margin="155,932,0,0" 
    VerticalAlignment="Top" 
    Width="180" 
    ItemsSource="{Binding TableList}" 
    DisplayMemberPath="NoteName" 
    SelectedValuePath="NoteID"/> 

我是新來這個,所以我很抱歉,如果我錯過了一些東西小。

+1

你檢查的結合問題輸出窗口? – gmn

+0

也嘗試像Snoop一樣檢查UI並查看它實際綁定的內容 – gmn

+0

它似乎綁定到TablesList,但集合是TableList。你可以檢查一下嗎?如果不能正常工作,您可以在您綁定組合的代碼中發佈該屬性嗎? –

回答

4

顯然你永遠不會創建一個你可以實際綁定到的TableList類的實例。

使用TableList屬性創建視圖模型類,例如,像

public class ViewModel 
{ 
    public TableList TableList { get; } = new TableList(); 
} 

你的主窗口的DataContext屬性然後設置到視圖模型類的一個實例:

public MainWindow() 
{ 
    InitializeComponent(); 
    DataContext = new ViewModel(); 
} 
+0

噢好吧我會給出一個去,我是這樣[如何:創建並綁定到一個ObservableCollection](https://msdn.microsoft.com/en-us/library/ms748365(v=vs.110) ).aspx)去我現在所在的地方 –

+0

你也可以不使用ViewModel類,直接指定'DataContext = new TableList();'。然後,綁定將被寫入沒有路徑:'ItemsSource =「{綁定}」'。 – Clemens

+0

謝謝你沒有視圖模型(im肯定會,以及我試過沒有,它的工作) –