2016-09-08 18 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 =" {Binding} "'。 – Clemens

+0

これはビューモデルなしでもうまくいきました。 –

関連する問題