![](/img/trans.png)
[英]WPF notified ComboBox selection box and drop-down list item not synchronizing and not refreshing promptly
[英]How to load combobox drop-down list from database with multiple selection in wpf using mvvm
我正在嘗試使用數據庫中的數據填充 combobox 下拉列表。 這應該在加載 window 時動態加載
查看 model
public class StdBasicVM
{
private ObservableCollection<string> _sStreamCmb;
public ObservableCollection<string> sStreamCmb
{
get { return _sStreamCmb; }
set { if (_sStreamCmb != value) { _sStreamCmb = value; OnPropertyChanged("sStreamCmb"); } }
}
private void COMBOBOX()
{
var connectionString = ConfigurationManager.ConnectionStrings["connscmag"].ConnectionString;
using (var conn = new MySqlConnection(connectionString))
{
conn.Open();
var query = "Select distinct entry FROM gidentifiers WHERE IDENTIFIER = 'STREAM' AND entry <> 'NULL' ";
using (var comm = new MySqlCommand(query, conn))
{
using (var reader = comm.ExecuteReader())
{
while (reader.Read())
{
if (reader.HasRows)
{
sStreamCmb.Add(reader.GetString("entry").ToString());
}
}
}
}
}
}
public StdBasicVM()
{
COMBOBOX();
}
}
Window
<ComboBox x:Name="txtStream" Grid.Row="9" Grid.Column="1"
Text="{Binding sStream, Mode=TwoWay}"
DisplayMemberPath="Name"
ItemsSource="{Binding sStreamCmb}"/>
它在sStreamCmb.Add(reader.GetString("entry").ToString())
object 引用未設置為 object 實例的行上生成錯誤。
在您的代碼中,您沒有初始化組合框可觀察集合。 更改此行:
private ObservableCollection<string> _sStreamCmb;
對此:
private ObservableCollection<string> _sStreamCmb= new ObservableCollection<string>();
它應該解決這個問題。 您可以通過在您的 csproj 文件中添加此行來突出顯示何時發生這種情況:
<WarningsAsErrors>CS0649</WarningsAsErrors>
這會將上述情況視為錯誤,從而使您不必在運行時查找。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.