CollectionViews в MVVM - PullRequest
       5

CollectionViews в MVVM

3 голосов
/ 05 января 2011

Обычно, чтобы получить представление коллекции элемента управления, я буду вызывать следующее:

            CollectionView cv = (CollectionView)CollectionViewSource.GetDefaultView(list.ItemsSource);

Обычно это делается в коде файла xaml.

Однако в MVVM ViewModel не должен знать о существовании View. Как получить CollectionView элемента управления, если я хочу сделать это в стиле MVVM?

Ответы [ 4 ]

1 голос
/ 05 января 2011

вам нужно определить ItemsSource как свойство в ViewModel, например

public CollectionView _sourceForList;
public CollectionView SourceForList
        {
            get
            {
                return _sourceForList;
            }
            set
            {
                _sourceForList = value;
            }
        }

, тогда в XAML вы можете привязать это свойство к списку

<ListBox Margin="9,30,9,0" 
         Name="listBox1" ItemsSource="{Binding SourceForList}" }/>

и можете вызывать как1007 *

        CollectionView cv = (CollectionView)CollectionViewSource.GetDefaultView(SourceForList);

надеюсь, что это поможет

1 голос
/ 05 января 2011

Я настоятельно рекомендую вам прочитать эту ссылку http://bea.stollnitz.com/blog/?p=387

1 голос
/ 05 января 2011

Вы можете получить CollectionView в ViewModel

1 - У вас есть Источник данных вашего списка, и вы связываете источник списка с этим известным источником данных.

2- Предположим, что DataSource является таблицей данных с именем dt.

 CollectionView cv = (CollectionView)CollectionViewSource.GetDefaultView(dt); 

 this will give you the CollectionView in ViewModel
0 голосов
/ 06 января 2011

Получите CollectionView в коде позади файла xaml (View).Шаблон MVVM не предназначен для устранения кода позади.Речь идет о разделении задач и тестируемости.

Образец BookLibrary WPF Application Framework (WAF) показывает, как работать с CollectionViewдля фильтрации в приложении MVVM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...