[英]How do I bind an ienumerable list item
我正在尝试使用点表示法将 DataGridComboBoxColumn 绑定到列表元素。 我的列表有数据,我可以在后面的代码中看到这些数据,但我的 ComboBox 是空白的。
我已经尝试了多种版本的绑定点符号级别。
这是我背后的代码......
List<DatabaseProperty> dbList = new List<DatabaseProperty>();
foreach(Database db in srv1.Databases)
{
DatabaseProperty newDB = new DatabaseProperty();
newDB.DBName = db.Name.ToString();
// Get the DB's users
//List<DBUser> dbUserList = new List<DBUser>();
for (int i = 0; i < srv1.Logins.Count; i++)
{
// DatabaseProperty class contains a DBUser enumerable list
DBUser newdbUser = new DBUser();
//newDB.DBUserList[i].UserName = srv1.Logins[i].Name;
newdbUser.UserName = srv1.Logins[i].Name;
newDB.DBUserList.Add(newdbUser);
}
dbList.Add(newDB);
}
还有 WPF...
<DataGrid x:Name="dgServers" Grid.Column="3" HorizontalAlignment="Left" Margin="22,24,0,0" Grid.Row="1" VerticalAlignment="Top" Height="237" Width="397" RenderTransformOrigin="0.5,0.5"
ItemsSource="{Binding dbPropsList}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="DBname" Binding="{Binding DBName}" />
<DataGridComboBoxColumn Header="DB Users" ItemsSource="{Binding Path=DBUserList.DBUser.UserName }" >
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
首先创建一个能够绑定的公共属性:
public DatabaseProperty MyNewBindableDB {get;set;}
List<DatabaseProperty> dbList = new List<DatabaseProperty>();
foreach(Database db in srv1.Databases)
{
DatabaseProperty newDB = new DatabaseProperty();
newDB.DBName = db.Name.ToString();
// Get the DB's users
//List<DBUser> dbUserList = new List<DBUser>();
for (int i = 0; i < srv1.Logins.Count; i++)
{
// DatabaseProperty class contains a DBUser enumerable list
DBUser newdbUser = new DBUser();
//newDB.DBUserList[i].UserName = srv1.Logins[i].Name;
newdbUser.UserName = srv1.Logins[i].Name;
newDB.DBUserList.Add(newdbUser);
}
dbList.Add(newDB);
}
MyNewBindableDB = dbList.FirstOrDefault(); //gets one list from your
//list of <DatabaseProperty>.
现在你的代码应该是这样的:
<DataGridComboBoxColumn
Header="DB Users"
ItemsSource="{Binding Path=MyNewBindableDB.DBUserList}"
SelectedValuePath="UserName"
DisplayMemberPath="UserName">
</DataGridComboBoxColumn>
您还可以创建类型为“DBUserList”的属性并绑定到它。
更多信息: DataGridComboBoxColumn
放弃 DataGridComboBoxColumn。
<ComboBox ItemsSource="{Binding DBUserList}" Text="{Binding UserName}"
DisplayMemberPath="UserName" IsEditable="True"></ComboBox>
</DataTemplate>
似乎我需要 TEXT 和 DisplayMemberPath 属性来实现这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.