C# 将数据层中的数据获取到视图中的observablecollection中

C# 将数据层中的数据获取到视图中的observablecollection中,c#,wpf,mvvm,observablecollection,C#,Wpf,Mvvm,Observablecollection,我将数据从DataLayer类获取到ViewModel中,但它不会进入与视图中的listbox绑定的observableCollection中 public class ViewModel : NotifyUIBase { public ViewModel() { FindImageCommand = new RelayCommand(FindImage); } public ObservableCollection<Image>

我将数据从DataLayer类获取到ViewModel中,但它不会进入与视图中的listbox绑定的observableCollection中

public class ViewModel : NotifyUIBase
{
    public ViewModel()
    {
         FindImageCommand = new RelayCommand(FindImage);
    }

    public ObservableCollection<Image> FindVisualReferences { get; set; }       
    public RelayCommand FindImageCommand { get; private set; }

    private void FindImage()
    {
         string SearchTerm = this.SearchBox;
         var dbFunctions = new DatabaseFunctions();
         FindVisualReferences = dbFunctions.FindVisualReferences(SearchTerm);
    }
}
但是我需要在用户发出findimage命令时调用该方法。
我怎样才能做到这一点?说到编码,我真的是个新手。

您的问题是,您使用ObservableCollection的新实例设置FindVisualReference属性,而不是从现有实例中添加和删除

public ObservableCollection<Image> FindVisualReferences { get; set; }

private void FindImage()
{
     string SearchTerm = this.SearchBox;
     var dbFunctions = new DatabaseFunctions();
     FindVisualReferences.Clear();
     FindVisualReferences.AddRange(dbFunctions.FindVisualReferences(SearchTerm));
}
但为了使其工作,您必须引发PropertyChanged事件

private ObservableCollection<Image> _findVisualReferences;
public ObservableCollection<Image> FindVisualReferences 
{ 
   get{ return _findVisualReferences;}
   set
   {
       _findVisualReferences = value;
       RaiseProperyChanged("FindVisualReferences");
   }
}
private observeCollection\u find虚拟参考;
公共可观测集合查找虚拟参考
{ 
获取{return\u findVisualReferences;}
设置
{
_findVisualReferences=值;
RAISEPROPERTYCHANGED(“FindVisualReferences”);
}
}
但若你们这样做了,那个么使用ObservableCollection并没有多大意义,所以只需使用List即可

我的建议是,将其设置为只读属性(即仅getter)并添加到其中

private ObservableCollection<Image> _findVisualReferences;
public ObservableCollection<Image> FindVisualReferences 
{ 
   get
   {
       if(_findVisualReferences == null)
          _findVisualReferences = new ObservableCollection<Image>(); 
       return _findVisualReferences;
   }       
}
private observeCollection\u find虚拟参考;
公共可观测集合查找虚拟参考
{ 
得到
{
if(_findVisualReferences==null)
_findVisualReferences=新的ObservableCollection();
返回\u find虚拟参考;
}       
}

您的问题在于,您将FindVisualReference属性设置为ObservableCollection的新实例,而不是从现有实例中添加和删除

public ObservableCollection<Image> FindVisualReferences { get; set; }

private void FindImage()
{
     string SearchTerm = this.SearchBox;
     var dbFunctions = new DatabaseFunctions();
     FindVisualReferences.Clear();
     FindVisualReferences.AddRange(dbFunctions.FindVisualReferences(SearchTerm));
}
但为了使其工作,您必须引发PropertyChanged事件

private ObservableCollection<Image> _findVisualReferences;
public ObservableCollection<Image> FindVisualReferences 
{ 
   get{ return _findVisualReferences;}
   set
   {
       _findVisualReferences = value;
       RaiseProperyChanged("FindVisualReferences");
   }
}
private observeCollection\u find虚拟参考;
公共可观测集合查找虚拟参考
{ 
获取{return\u findVisualReferences;}
设置
{
_findVisualReferences=值;
RAISEPROPERTYCHANGED(“FindVisualReferences”);
}
}
但若你们这样做了,那个么使用ObservableCollection并没有多大意义,所以只需使用List即可

我的建议是,将其设置为只读属性(即仅getter)并添加到其中

private ObservableCollection<Image> _findVisualReferences;
public ObservableCollection<Image> FindVisualReferences 
{ 
   get
   {
       if(_findVisualReferences == null)
          _findVisualReferences = new ObservableCollection<Image>(); 
       return _findVisualReferences;
   }       
}
private observeCollection\u find虚拟参考;
公共可观测集合查找虚拟参考
{ 
得到
{
if(_findVisualReferences==null)
_findVisualReferences=新的ObservableCollection();
返回\u find虚拟参考;
}       
}

有什么问题吗?您没有执行FindImageCommand吗?如何激活该命令?通过一个按钮或类似的东西?命令执行,我可以将数据放入ViewModel,但不知何故它没有到达ViewModel中的ObservableCollection,尽管FindImage方法中的FindVisualReferences包含ObservableCollection与视图绑定所需的项。问题是什么?您没有执行FindImageCommand吗?如何激活该命令?通过一个按钮或类似的东西?命令执行,我可以将数据放入ViewModel,但不知何故它没有到达ViewModel中的ObservableCollection,尽管FindImage方法中的FindVisualReferences包含ObservableCollection与视图绑定所需的项。