C# 数据绑定列表框Winforms

C# 数据绑定列表框Winforms,c#,winforms,data-binding,inotifypropertychanged,C#,Winforms,Data Binding,Inotifypropertychanged,这将在数据绑定和实现INotifyPropertyChanged的其他众多线程中得到回答。然而,我仍然有困难让这个工作 基本上我有两个列表框,当用户从第一个列表框中选择服务器名称时,第二个列表框应该提供该服务器上的数据库列表。很简单。但是,第二个列表框不显示更新的数据库列表 代码如下: 执行查询并将数据添加到DatabaseList属性的代码 private void selection_Server_SelectionChangeCommitted(object sender,

这将在数据绑定和实现INotifyPropertyChanged的其他众多线程中得到回答。然而,我仍然有困难让这个工作

基本上我有两个列表框,当用户从第一个列表框中选择服务器名称时,第二个列表框应该提供该服务器上的数据库列表。很简单。但是,第二个列表框不显示更新的数据库列表

代码如下: 执行查询并将数据添加到DatabaseList属性的代码

        private void selection_Server_SelectionChangeCommitted(object sender, EventArgs e)
    {
        server = (string)selection_Server.SelectedItem;
        try
        {
            ExecDBList(server, ref vm);
        }
类,该类管理窗口上使用的属性

    public class VM : INotifyPropertyChanged
{
    private static List<string> _dblist;
    public  List<string> DatabaseList
    {
        get
        {
            return _dblist;
        }
        set
        {
            if (_dblist != value)
            {
                _dblist = value;
            };
        }
    }
    public VM() { }

    void OnPropertyChanged(string PropertyName)
    {
            PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));
    }

    public event PropertyChangedEventHandler PropertyChanged;
如果能帮助我实现这一点,我将不胜感激,因为我正在努力理解之前关于数据绑定和使用PropertyChangedEventHandler的答案

多谢各位
Richard

尝试在PropertyChanged()上添加
\u dblist
上设置值后,如下所示:

public  List<string> DatabaseList
{
    get
    {
        return _dblist;
    }
    set
    {
        if (_dblist != value)
        {
            _dblist = value;
            OnPropertyChanged("DatabaseList");
        };
    }
}

最近没有使用WinForms,但是使用WPF,您尝试过这样做吗

RaisePropertyChanged(“数据库列表”)


这样,在您重新查询私有列表条目之后,任何绑定到它的内容都应该被通知。。。嘿,你的消息来源刚刚更新。。。还有一份新的清单。

谢谢,我是个白痴,没有打电话。然而,我有一个旧版本,其中包含了对OnPropertyChanged的调用。它仍然不起作用,事实上,在调试行PropertyChanged(这是新的PropertyChangedEventArgs(PropertyName))时失败;我认为我没有做的是将PropertyChanged事件链接到listbox本身?不确定我是否需要这样做,尽管下面的评论在一定程度上帮助了我对这个主题的了解,但我仍然没有让它工作。
public  List<string> DatabaseList
{
    get
    {
        return _dblist;
    }
    set
    {
        if (_dblist != value)
        {
            _dblist = value;
            OnPropertyChanged("DatabaseList");
        };
    }
}
if (_dblist != value)
{
    _dblist = value;
    NotifyPropertyChanged();
};