- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不明白为什么我的 ICollectionView 没有刷新。谁能解释我做错了什么?
我做了这样一个 View 模型:
class ViewModel : INotifyPropertyChanged
{
private ObservableCollection<Entity> m_entities = new ObservableCollection<Entity>();
public ICollectionView EntitiesView { get; private set; }
public ICollectionView HighCountView { get; private set; }
public ViewModel()
{
m_entities.Add(new Entity() { Id = 1, Name = "Erik", Description = "The first" });
m_entities.Add(new Entity() { Id = 2, Name = "Olle", Description = "The second" });
m_entities.Add(new Entity() { Id = 3, Name = "Kim", Description = "The last" });
EntitiesView = CollectionViewSource.GetDefaultView(m_entities);
EntitiesView.CurrentChanged += new EventHandler(EntitiesView_CurrentChanged);
HighCountView = new CollectionView(m_entities);
using (HighCountView.DeferRefresh())
{
HighCountView.Filter = e => ((Entity)e).Count > 3;
}
}
private void EntitiesView_CurrentChanged(object sender, EventArgs e)
{
Entity current = EntitiesView.CurrentItem as Entity;
if(current!=null)
{
current.Count++;
HighCountView.Refresh(); // Do I need this line?
OnPropertyChanged("HighCountView"); // or this?
}
}
...在我的窗口中,我将它用作数据上下文,如下所示:
public partial class MainWindow : Window
{
private ViewModel vm = new ViewModel();
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.DataContext = vm;
}
}
...我正在像这样在 XAML 代码中进行绑定(bind):
<ListBox Grid.Column="0" x:Name="listView1" DisplayMemberPath="Name" ItemsSource="{Binding EntitiesView}" IsSynchronizedWithCurrentItem="True" />
<ListView Grid.Column="1" x:Name="listView2" DisplayMemberPath="Name" ItemsSource="{Binding HighCountView}" IsSynchronizedWithCurrentItem="True" />
问题是,尽管我设置了过滤器属性,但所有三个实体始终显示在 listView2 中。为什么?
编辑
为了使示例完整,这里是实体类。
class Entity : INotifyPropertyChanged
{
private int m_id;
public int Id
{
bla bla.....
}
private string m_name;
public string Name
{
bla bla.....
}
private string m_description;
public string Description
{
bla bla.....
}
private int m_count;
public int Count
{
get { return m_count; }
set
{
if (value != m_count)
{
m_count = value;
OnPropertyChanged("Count");
}
}
}
public void Update()
{
Description = "Updated: " + (++Count).ToString() + " times.";
}
最佳答案
终于找到问题了
如果我改变行:
HighCountView = new CollectionView(m_entities);
对此
HighCountView = new ListCollectionView(m_entities);
然后它按预期工作。
我也可以删除这一行
OnPropertyChanged("HighCountView"); // or this?
希望对大家有所帮助!
关于wpf - 为什么不刷新 ICollectionView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12912057/
我不明白为什么我的 ICollectionView 没有刷新。谁能解释我做错了什么? 我做了这样一个 View 模型: class ViewModel : INotifyPropertyChanged
有什么办法吗 ICollectionView.Refresh() 或者 CollectionViewSource.GetDefaultView(args.NewValue).Refresh(); 在
我已经编写了用于在 ComboBox 中过滤项目的代码: 我的问题是,你会怎么做? 我认为这个带有反射的解决方案可能会非常慢.. ICollectionView view = CollectionVi
我有一个 ObservableCollection : public ObservableCollection Collection { get; set; } = new ObservableCol
ImageAlbums是一个 ICollectionView类型和 GlobalCollection.MyImageAlubms是一个 ObservableCollection类型。 ImageAlb
也许有人可以帮助我?我有以下场景: 一个简单的 View : Refresh 背后的代码: publ
我有 3 个级联 ICollectionView s 在我的 View 模型中,其中一个依赖于另一个。 第一个不绑定(bind)到 View 上的控件,而是用作两个即将出现的作为主细节显示给用户的键过
我正在尝试在 WPF 中实现 MVVM 模式。我关注了 Jeremy Alles 的 Very simple MVVM demo application 。我有一个 ListBox,它绑定(bind)
我在我的 View 模型中将一个 ListView 绑定(bind)到一个 ICollectionView。 ICollectionView 有一些预定义的过滤器,当您单击某些按钮时会应用这些过滤器。
我有一个类 Class ABC() { public string Name{get;set;} public string Category{get;set;} } 由此类形成的列表
我创建了一个小型用户控件,其中包含一个 ICollectionView 和一个 ObservableCollection。 ObservableCollection messages; public
我有一个名为 ItemType 的对象的集合,每个集合都有一个 Item 的子集合。顶级集合被包装到一个 ObservableCollection 中,因此它会在用户从集合中添加或删除内容时做出响应。
我有一个使用 Entity Framework 查询数据库并将结果放在 ICollectionView 中的方法。 ICollectionView 充当 DataGrid 的 ItemsSource。
有什么方法可以自动更新 ICollectionView 上的过滤器,而无需在进行相关更改时调用 Refresh()? 我有以下内容: [Notify] public ICollectionView W
如何在 C# 中从 ICollectionView 中删除项目? Dictionary entityDict; public ICollectionView DictView { get; set;
我有一个 .Net 4.5 应用程序正在迁移到基于 WPF 的 RxUI(在撰写本文时保持最新,6.0.3)。我有一个文本字段,它应该用作具有相当常见的 throttle 等的过滤器字段,这些东西首先
所以我有一个数据网格,我需要为其添加自定义排序,我还需要知道排序的确切顺序。 我已阅读,为了做到这一点,我需要实现自定义 icollectionview 并将其绑定(bind)到数据网格。 我遇到的问
我有 ICollectionView 看起来像 public ICollectionView UsersCollectionView { get { var view
我将 ObservableCollection 绑定(bind)到 dataGrid,现在我想过滤显示的数据 我发现我需要使用 ICollectionView 但我不确定如何使用我的 MVVM 模式添
我是WPF的新手,看起来我也不完全理解C#。 下面的代码应该向 DataGrid 提供排序后的数据。 这是我难以理解的代码: ObservableCollection PersonsCollectio
我是一名优秀的程序员,十分优秀!