MVVM中的CollectionViews

时间:2011-01-05 03:12:15

标签: c# .net wpf mvvm

通常,要获取控件的集合视图,我将调用以下内容:

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

这通常在xaml文件后面的代码中完成。

但是,在MVVM中,ViewModel不应该知道View的存在。如果我想以MVVM方式进行控制,如何获取控件的CollectionView?

4 个答案:

答案 0 :(得分:1)

您可以在ViewModel中获取CollectionView

1-您拥有列表的数据源,并将列表的项目源与此已知数据源绑定。

2-假设DataSource是一个名为dt的DataTable。

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

 this will give you the CollectionView in ViewModel

答案 1 :(得分:1)

您需要将ItemsSource定义为ViewModel中的属性,如

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

然后在XAML中,您可以将此属性绑定到List

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

你可以像

一样打电话
        CollectionView cv = (CollectionView)CollectionViewSource.GetDefaultView(SourceForList);

希望这会有所帮助

答案 2 :(得分:1)

我强烈建议您阅读此链接http://bea.stollnitz.com/blog/?p=387

答案 3 :(得分:0)