将TextBox绑定到ObservableCollection.Count WPF?

时间:2014-06-11 14:58:47

标签: c# wpf mvvm

我有一个TextBox,其文本绑定到ObervableCollection的计数,向用户显示在绑定到同一集合的UI DataGrid中显示的行数。

Text="{Binding ModelviewArticleObservableList.Count, Mode=OneWay}" />

这很有效。但是,我有ClearButton绑定到Command命令方法清除ObservableCollection并读入新值。我的TextBox上的Count导致了很大的内存问题,大概是因为它正在尝试在读取值时迭代集合。

这不是应用程序加载的问题,因为viewModelconstructor之前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");                
        }
    }

1 个答案:

答案 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));