Webサービスから取得したDataTableがありますが、これはコンボボックスにバインドする必要があります。私はまだXAMLでバインディングをやっていませんでしたので、この質問はコードでバインドすることです。これまでのところ私はコードでWPFでDisplayMemberPathとSelectedValueを設定します。
cboManager.DataContext = Slurp.DistrictManagerSelect().DefaultView;
cboManager.DisplayMemberPath = "Name";
cboManager.SelectedValuePath = "NameListId";
cboManager.SetBinding(ComboBox.ItemsSourceProperty, new Binding());
を試してみましたそして私は、私は表示するために経営者のリストを取得するが、私はコンボボックスから選択したときに、私は、[名前]と[NameListId]を取得する両方のケースで
DataTable tbl = new DataTable();
tbl = Slurp.DistrictManagerSelect();
cboManager.ItemsSource = ((IListSource)tbl).GetList();
cboManager.DisplayMemberPath = "[Name]";
cboManager.SelectedValuePath = "[NameListId]";
DataContext = this;
を試してみました私が期待している価値ではありません。 XAMLのDataBindingを使用していない以外は何が間違っていますか?私のオリジナルのポストへの回答をして来た後
編集を追加
をので(レイチェルの応答に基づいて)このような数3つのルックス試してみてください。私は彼女が何を意味するのかやっていると仮定すると、
using (DataTable tbl = Slurp.DistrictManagerSelect())
{
List<ManagerList> list = new List<ManagerList>();
foreach (var row in tbl.Rows)
{
list.Add(new ManagerList
{
NameListId = (int)row[0],
Name = row[1].ToString()
});
}
}
を正しい方法でこのエラーが発生しません[オブジェクト型]の式に[]でインデックスを適用できません
レイチェルをバインドします。私は正しいアイデアを持っていますか?そして、私はその仕事をするために何をする必要がありますか? –
@BukHixあなたの 'DisplayMemberPath'と' SelectedValuePath'から角括弧を削除してください。私の推測では、 'ManagerList [Name]'にバインドしようとするとエラーが発生します。これは無効です。代わりに 'ManagerList.Name'にバインドしてください。 – Rachel
NameListId =(int)行[0]とName = row [1] .ToString()の2行でエラーが発生していますので、Manager.Listが入っているポイントにもなっていません。私が使用しているコードは、編集に投稿されたものです(DisplayMemberとSelectedValueパスを削除しました)。 –