2016-09-08 48 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肯定会,以及我试过没有,它的工作) –