Привязка TextBox к ObservableCollection.Count WPF?

1

У меня есть TextBox с текстом, привязанным к счету ObervableCollection который показывает пользователям, сколько строк отображается в пользовательском интерфейсе DataGrid который связан с одной и той же коллекцией.

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

Это отлично работает. Тем не менее, у меня есть ClearButton который связан с Command метод команды очищает ObservableCollection и читает новые значения. Граф в моем TextBox вызывает большие проблемы с памятью, по-видимому, потому, что он пытается перебирать коллекцию по мере чтения значений.

Это не проблема загрузки приложения, поскольку viewModel в constructor до InitializeComponent() когда счетчик имеет место в представлении (сначала ViewModel). Проблема с памятью - это когда ClearButton команда ClearButton.

Есть ли способ скрыть привязку или что-то подобное, поэтому метод Count вызывается после компиляции ObservableCollection?

Вот мой объект ObservableCollection в моей модели:

    private ObservableCollection<viewArticle> _ModelviewArticleObservableList = new ObservableCollection<viewArticle>();
    public ObservableCollection<viewArticle> ModelviewArticleObservableList
    {
        get { return _ModelviewArticleObservableList; }
        set
        {
            _ModelviewArticleObservableList = value;
            OnPropertyChanged("ModelviewArticleObservableList");                
        }
    }
  • 0
    Возможно, просто обновите новую наблюдаемую коллекцию и замените существующую.
Теги:
wpf
mvvm

1 ответ

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));
  • 0
    Это отличное решение, очень четкое о том, что он делает, и простое в обслуживании.
  • 0
    Спасибо @Xaruth. Я изучаю силу выставленных свойств в MVVM. 1 вопрос, как вы вызываете событие RaisePropertyChange с Int32? У меня только реализован интерфейс INPC, принимающий строку propertyName. Я обновил вопрос с моей собственностью ...
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню