[英]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.