【发布时间】:2011-05-08 01:58:32
【问题描述】:
我正在使用遵循 MVVM 设计模式的 C# WPF。目前我的视图有一个ListView,其中包含几列和几行(即ListViewItems)。
ViewModel 公开了一个 View 绑定到的 ObservableCollection<Person> 集合(如下所示)。
public ObservableCollection<Person> People
{
get
{
return _people;
}
set
{
// new value?
if( value != _people )
{
// Set
_people = value;
// Notify
OnPropertyChanged( "People" );
}
}
}
这里是绑定sn-p
<ListView ItemsSource="{Binding People}" ... >
<!-- Omitted -->
</ListView>
在视图中,用户可以单击列标题,ListView 将相应地自行排序。问题是 ViewModel 中的一些逻辑和命令对元素的顺序很敏感,当 ListView 在特定列上排序时,ViewModel 中的基础 People 集合不反映用户的顺序看到。
关于如何将ListView 中已排序的ListViewItems 与底层ObservableCollection<Person> 同步的任何线索?
编辑已经在 ListView ItemsSource 上尝试过 Mode=TwoWay,但没有成功。
【问题讨论】:
-
这显然是设计为将您的视图耦合到应用程序的其他部分,即..通常不赞成使用 VM 或 M。
标签: c# wpf listview binding listviewitem