【发布时间】:2016-08-31 07:56:51
【问题描述】:
我有这个ObservableCollection
public static ObservableCollection<NahrungsmittelKategorie> NahrungsmittelKategorie
{
get;
set;
}
这个nahrungsmittelkategorie.cs
public class NahrungsmittelKategorie
{
public int NahrungsmittelID { get; set; }
public string NahrungsmittelName { get; set; }
public ObservableCollection<Kategorie> NahrungsmittelKategorien { get; set; }
}
这个方法:
ObservableCollection<NahrungsmittelKategorie> ListNahrungsmittel = new ObservableCollection<NahrungsmittelKategorie>();
MySqlConnection connection = SQLConnection.getConnection();
MySqlCommand cmdGetNahrungsmittel = new MySqlCommand("Select ID, Name from t_Nahrungsmittel", connection);
connection.Open();
MySqlDataReader reader = cmdGetNahrungsmittel.ExecuteReader();
while (reader.Read())
{
NahrungsmittelKategorie n = new NahrungsmittelKategorie();
n.NahrungsmittelID = reader.GetInt32(0);
n.NahrungsmittelName = reader.GetString(1);
ListNahrungsmittel.Add(n);
}
connection.Close();
for (int i = 0; i < ListNahrungsmittel.Count; i++)
{
ObservableCollection<Kategorie> ListKategorie = new ObservableCollection<Kategorie>();
MySqlCommand cmdGetKategorien = new MySqlCommand("Select t_kategorie.id, t_kategorie.Kategorie from t_kategorie " +
"inner join t_nahrungsmittelkategorie on t_kategorie.id = t_nahrungsmittelkategorie.kategorie " +
"inner join t_nahrungsmittel on t_nahrungsmittelkategorie.nahrungsmittel = t_nahrungsmittel.id " +
"where t_nahrungsmittel.id = " + ListNahrungsmittel[i].NahrungsmittelID, connection);
connection.Open();
reader = cmdGetKategorien.ExecuteReader();
while (reader.Read())
{
Kategorie k = new Kategorie();
k.KategorieID = reader.GetInt32(0);
k.KategorieKategorie = reader.GetString(1);
ListKategorie.Add(k);
}
connection.Close();
ListNahrungsmittel[i].NahrungsmittelKategorien = ListKategorie;
}
NahrungsmittelKategorie = ListNahrungsmittel;
}
最后是这个 xaml 代码:
<DataGrid x:Name="DataNahrungsmittel" ItemsSource="{Binding Path=NahrungsmittelKategorie}" ColumnWidth="1*" AutoGenerateColumns="False" CanUserReorderColumns="False" CanUserSortColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding NahrungsmittelID}"/>
<DataGridTextColumn Header="Nahrungsmittel" Binding="{Binding NahrungsmittelName}"/>
</DataGrid.Columns>
</DataGrid>
我没有得到 DataGrid 中的值。有人可以告诉我有什么问题吗?我已经测试了很多解决方案。
这些是之后的 DataGrid:
如果我得到这个代码:
<DataGrid x:Name="DataNahrungsmittel" ItemsSource="{Binding NahrungsmittelKategorie}" ColumnWidth="1*" AutoGenerateColumns="True" CanUserReorderColumns="False" CanUserSortColumns="False">
我得到了这个数据网格:
【问题讨论】:
-
打开DataGrid所在的窗口/页面/控件时输出是否有绑定错误?
-
我只得到一个带有很多空行的空数据网格。显示有问题的图片
-
你是否正确设置了DataContext?
-
你是什么意思?