我有一个TextBox
,其文本绑定到ObervableCollection
的计数,向用户显示在绑定到同一集合的UI DataGrid
中显示的行数。
Text="{Binding ModelviewArticleObservableList.Count, Mode=OneWay}" />
这很有效。但是,我有ClearButton
绑定到Command
命令方法清除ObservableCollection
并读入新值。我的TextBox
上的Count导致了很大的内存问题,大概是因为它正在尝试在读取值时迭代集合。
这不是应用程序加载的问题,因为viewModel
在constructor
之前InitializeComponent()
在视图中发生计数(ViewModel优先)时实例化。内存问题就在调用ClearButton
命令时。
有没有办法让绑定或其他东西睡眠,以便在Count
编译后调用ObservableCollection
方法?
以下是我的视图模型中的ObservableCollection
属性:
private ObservableCollection<viewArticle> _ModelviewArticleObservableList = new ObservableCollection<viewArticle>();
public ObservableCollection<viewArticle> ModelviewArticleObservableList
{
get { return _ModelviewArticleObservableList; }
set
{
_ModelviewArticleObservableList = value;
OnPropertyChanged("ModelviewArticleObservableList");
}
}
答案 0 :(得分:4)
使用属性
public Int32 ArticleCount
{
get
{
if (this.ModelviewArticleObservableList == null)
{
return 0;
}
else
{
return this.ModelviewArticleObservableList.Count;
}
}
}
然后,在XAML中,绑定到此属性
Text="{Binding ArticleCount, Mode=OneWay}" />
并且不要忘记在ModelviewArticleObservableList
RaisePropertyChange<Int32>(() => this.ArticleCount));