通常,要获取控件的集合视图,我将调用以下内容:
CollectionView cv = (CollectionView)CollectionViewSource.GetDefaultView(list.ItemsSource);
这通常在xaml文件后面的代码中完成。
但是,在MVVM中,ViewModel不应该知道View的存在。如果我想以MVVM方式进行控制,如何获取控件的CollectionView?
答案 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)