gpt4 book ai didi

c# - 将数据从数据层获取到 View 中的 observablecollection

转载 作者:行者123 更新时间:2023-12-03 10:44:50 24 4
gpt4 key购买 nike

我从 DataLayer 类获取数据到 ViewModel,但它没有进入与 View 中的列表框绑定(bind)的 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);
}
}

我已经测试了 FindVisualReferecences(SearchTerm)方法,它给出了填充 observableCollection 所需的项目。
我还使用 View 测试了数据绑定(bind),并且正在工作。

当我将方法放在构造函数中时, ObservableCollection 被填充
  public ViewModel()
{
var dbFunctions = new DatabaseFunctions();
FindVisualReferences = dbFunctions.FindVisualReferences(SearchTerm);
}

但是当用户给出 FindImageCommand 时,我需要调用该方法。
我怎样才能使这项工作?在编码方面,我真的是个菜鸟。

最佳答案

您的问题是您使用 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));
}

或者你可以像你一样做并设置属性
FindVisualReferences = dbFunctions.FindVisualReferences(SearchTerm); 

但为了使其正常工作,您必须引发 PropertyChanged 事件。
private ObservableCollection<Image> _findVisualReferences;
public ObservableCollection<Image> FindVisualReferences
{
get{ return _findVisualReferences;}
set
{
_findVisualReferences = value;
RaiseProperyChanged("FindVisualReferences");
}
}

但是,如果您这样做,那么使用 ObservableCollection 并没有多大意义,所以只需使用 List 代替。

我的建议,将其设为只读属性(即仅 getter)并添加到其中。
private ObservableCollection<Image> _findVisualReferences;
public ObservableCollection<Image> FindVisualReferences
{
get
{
if(_findVisualReferences == null)
_findVisualReferences = new ObservableCollection<Image>();
return _findVisualReferences;
}
}

关于c# - 将数据从数据层获取到 View 中的 observablecollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31286902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com