c# - 将 TextBox 绑定(bind)到 ObservableCollection.Count WPF?

标签 c# wpf mvvm

我有一个 TextBox,文本绑定(bind)到 ObervableCollection 的计数,它向用户显示在 UI DataGrid 中显示了多少行> 绑定(bind)到同一个集合。

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

这很好用。但是,我有一个绑定(bind)到 CommandClearButton 命令方法清除 ObservableCollection 并读取新值。我的 TextBox 上的 Count 导致了很大的内存问题,大概是因为它在读入值时试图遍历集合。

这不是应用程序加载的问题,因为 viewModelInitializeComponent() 之前在 constructor 中实例化,当计数发生时在 View 中(首先是 ViewModel)。内存问题仅在调用 ClearButton 命令时出现。

是否有任何方法可以让绑定(bind)或其他东西休眠,以便在编译 ObservableCollection 之后调用 Count 方法?

这是我的 View 模型中的 ObservableCollection 属性:

    private ObservableCollection<viewArticle> _ModelviewArticleObservableList = new ObservableCollection<viewArticle>();
    public ObservableCollection<viewArticle> ModelviewArticleObservableList
    {
        get { return _ModelviewArticleObservableList; }
        set
        {
            _ModelviewArticleObservableList = value;
            OnPropertyChanged("ModelviewArticleObservableList");                
        }
    }

最佳答案

使用属性

public Int32 ArticleCount
{
    get
    {
        if (this.ModelviewArticleObservableList == null)
        {
            return 0;
        }
        else
        {
            return this.ModelviewArticleObservableList.Count;
        }
    }
}

然后,在 XAML 中,绑定(bind)到该属性

Text="{Binding ArticleCount, Mode=OneWay}" />

并且当 ModelviewArticleObservableList 发生修改时不要忘记通知

RaisePropertyChange<Int32>(() => this.ArticleCount));

关于c# - 将 TextBox 绑定(bind)到 ObservableCollection.Count WPF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24166240/

相关文章:

C#给字符串变量添加函数或变量的方法

c# - 基于矢量的生成器是创建条形码的最佳方式吗?

c# - 如何在 Winforms 应用程序中实现从小型 WPF 元素宿主的拖放操作?

wpf - ObservableCollection获取重置(项目计数为0)在两个 View 之间

wpf - 委托(delegate)命令和路由命令

windows-phone-8 - 如何在 Windows Phone 8.1 应用程序 (xaml) 中实现 MVVM?

c# - 响应式扩展/并行扩展中的最大线程数

c# - 无法在 Unity 中查询或扫描 DynamoDB

c# - WPF 菜单项未关闭

c# - WPF-使按钮的凹陷效果变慢