ObservableCollection是一个.NET集合类,它在集合中添加,删除,替换,移动或重新排序项目时,或者在替换集合的整个内容时发送事件通知。
如标题所示,我正在尝试实现 ObservableCollection 项目的自动包装,目前我正在使用 CollectionChanged 事件来执行此操作,其中我检查元素是否为所需类型,如果不是,我...
ObservableCollection 绑定到另一个 ObservableCollection 不会触发 CollectionChanged
我有 ControlA 托管 ControlB,它们都有 ObservableCollection 类型的 DependencyProperty,嵌套控件的 (ControlB) 属性绑定到父级 (ControlA) 属性,如果有的话
为什么我的 ObservableCollection 在使用新列表重新初始化时没有更新?
我创建了一个 MAUI 应用程序,在视图模型中我有一个 ObservableCollection 存储位置。然后这些将显示在 UI 上的图表上。 但是位置的计算需要花费...
高效地将一系列值添加到 ObservableCollection
我有一个 ObservableCollection 项目,它绑定到我视图中的列表控件。 我遇到一种情况,我需要将一大块值添加到集合的开头。 收藏.在...
ObservableCollection 在 WPF 中不会自动通知 UI
我正在尝试构建我的第一个基于 MVVM 模式的应用程序。 我仍然没有将视图与按钮单击操作隔离,因为我陷入了 ObservableCollection 的这个问题。 这些是课程:
无法将 ObservableCollection<Video> 从一个页面传递到另一页面
我无法将 ObservableCollection 从一个页面传递到另一个页面。我在整个项目中都使用相同的模式,所以我不确定为什么它在这里失败。我正在使用 MVVM 模式。 这是我的
抛出异常:mscorlib.ni.dll 中的“System.ArgumentNullException”
我是 c# 新手,正在尝试为我的 ObservableCollection 类实现 INotifyPropertyChanged 但它给出了一个错误并且数据没有被绑定。有人请帮我解决这个问题 一个
有没有办法直接绑定到模型中的集合并手动告诉WPF绑定需要刷新,而不必在视图模型中为其创建ObservableCollection? 有没有办法直接绑定到模型中的 Collection 并手动告诉 WPF 绑定需要刷新,而不必在视图模型中为其创建 ObservableCollection? <ListBox ItemsSource="{Binding Position.PossibleMoves}"> ... </ListBox> Position 是我的模型,是国际象棋库的一部分,PossitionMoves 是其中的一个集合。我不想实现 INotifyProperty 更改或将 ObservableCollections 放入独立的优化库中。 我想避免每次更新位置时将PossibleMoves复制到ObservableCollection中。数据绑定在初始化时起作用,但如果我也可以在视图模型内随意刷新绑定,那就会很方便。 从视图模型调用 OnNotifyPropertyChanged("Position.PossibleMoves") 不起作用,因为对集合本身的引用不会更改。 您可以通过使用附加行为将处理程序绑定到在视图模型中触发的事件来实现此目的。不过,您不能直接绑定到事件,因此您必须将它们包装在一个类中,如下所示: public class Refresher { public delegate void RefreshDelegate(); public event RefreshDelegate Refresh; public void DoRefresh() { if (this.Refresh != null) this.Refresh(); } } 现在将其实例添加到您的视图模型中: public class MyViewModel { public IList<string> Items { get; set; } private Refresher _Refresher = new Refresher(); public Refresher Refresher {get {return this._Refresher;}} } 接下来创建一个附加行为,该行为向该事件注册委托实例并强制列表框刷新其绑定: public static class RefreshBehavior { public static readonly DependencyProperty RefresherProperty = DependencyProperty.RegisterAttached( "Refresher", typeof(Refresher), typeof(RefreshBehavior), new PropertyMetadata(null, OnRefresherChange)); public static void SetRefresher(DependencyObject source, Refresher value) { source.SetValue(RefresherProperty, value); } public static Refresher GetRefresher(DependencyObject source) { return (Refresher)source.GetValue(RefresherProperty); } private static void OnRefresherChange(DependencyObject d, DependencyPropertyChangedEventArgs e) { Refresher.RefreshDelegate handler = () => { var listBox = d as ListBox; listBox.Items.Refresh(); }; if (e.NewValue != null) (e.NewValue as Refresher).Refresh += handler; if (e.OldValue != null) (e.OldValue as Refresher).Refresh -= handler; } } 最后将其附加到 xaml 中的列表框: <ListBox ItemsSource="{Binding Items}" local:RefreshBehavior.Refresher="{Binding Refresher}"/> 就是这样。在视图模型中调用 Refresher.DoRefresh(),它将强制列表框更新。 这可行,但实际上是将方钉锤入圆孔。如果我是你,我会尽我所能尝试在你的视图模型中进行正确的集合更改通知。我理解您希望将 ObservableCollection 排除在模型之外,但有一些方法可以自动代理更改通知(例如 Castle DynamicProxy)。 您需要从 Position 类内部为 possibleMoves 通知属性更改,或者创建一个委托给 Position.PossibleMoves 的属性并通知该属性。
将项目添加到 ObservableCollection 时更新 WPF Datagrid
我无法弄清楚这个来拯救我的生命。 我有一个简单的 WPF 表单,在文本框中输入数据,用户可以单击插入并将其保存到数据库。我还有一个数据网格正在显示...
ObservableCollection 在清除后显示项目的顺序不正确
我有一个 ObservableCollection,我在其中添加项目并偶尔清除。 然后是反应式管道,其想法是按插入顺序获取 ObservableCollection 的当前内容。 是...
为什么不能从不同的线程更新 ObservableCollection?
在多线程 WPF 应用程序中,无法从 WPF 窗口线程以外的线程更新 ObservableCollection。 我知道有解决方法,所以我的问题不是如何避免......
嗨,我一直在网上寻找一些选项卡按钮关闭功能,但所有这些解决方案都有一些复杂的事件处理程序,我想尝试保持简单,但我可能已经破坏了
如何在.Net MAUI 中保持 CollectionView 始终滚动到底部
我想使用CollectionView创建一个日志窗口。每当添加新项目时,它应该自动滚动到底部。我尝试使用一种行为来实现此功能,以便轻松......
我正在尝试在 PowerShell 中为可观察集合注册 PropertyChanged 事件,但没有成功。这对于 CollectionChanged 事件来说效果很好。 这有效: 注册对象事件 -
.NET MAUI ListView - ObservableCollection - 在异步方法期间不更新
我尝试了几种不同的方法来做到这一点,但还没有完全弄清楚如何组合才能使其按预期工作。这是在使用 .NET 6 的 .NET MAUI 中。基本上,UI 没有更新/
在 ObservableCollection 中添加项目时,NewItems 始终为 null
我正在开发一个 WPF 应用程序,我在其中使用 ObservableCollection。我使用 Add() 方法将对象添加到该集合中。我的问题是,当我管理 CollectionChanged 事件时,我...
我有一个 MAUI 应用程序,其视图绑定到包含具有以下属性集的分组 CollectionView 的视图模型: 我有一个 MAUI 应用程序,其视图绑定到包含分组 CollectionView 的视图模型,这些属性集: <CollectionView x:Name="MyList" VerticalOptions="FillAndExpand" ItemsSource="{Binding CollectionViewItemSourceGrouped}" SelectionMode="Single" SelectedItem="{Binding MyItem, Mode=TwoWay}" SelectionChangedCommand="{Binding MySelectionCommand}" RemainingItemsThreshold="2" RemainingItemsThresholdReachedCommand="{Binding LoadMoreItemsCommand}" IsGrouped="True" EmptyView="No item found."> 我从可等待的 Web api 获取源项目并将其分组,当我第一次导航到视图时,如果我开始来回切换过滤列表的开关,我会正确地对集合进行分组。不幸的是,当我导航到详细信息页面并通过 Shell 导航返回到集合时,如果我再次按下开关并重新加载列表,我总是会得到一些空组,并且它在图形上会导致一团糟。 用作集合源的对象是CollectionViewItemSourceGrouped,它是一个具有以下实现的ObservableCollection<ItemsGroup>: public class ItemsGroup : ObservableRangeCollection<ItemModel> { public DateTime Date { get; private set; } public ItemsGroup(DateTime date, ObservableRangeCollection<ItemModel> list) : base(list) { Date = date; } } 每次我重新加载数据时,我确保对象CollectionViewItemSourceGrouped被设置为null或者是一个新的空对象。我希望该集合是空的,而这会继续显示只有标题集的空组。我怎样才能摆脱它们并让收藏正确刷新? 这只发生在 iOS 和 MacCatalyst 上。它在 Android 和 WinUI 上运行良好。
PropertyChanged 与 CollectionChanged - 请帮助理解基础知识
经过大量研究,我确实需要你的帮助。关于我的第一个版本的评论一直在帮助我寻找新的关键词。 在研究时,我发现了几篇这样的文章:
PropertyChanged 仅提高一次,尽管属性经常变化(ArrayList、ObservableCollection<int>)
经过大量研究,我确实需要你的帮助。在研究时,我发现了几篇这样的文章: 如何将模型更改从模型传达给 ViewModel 双向绑定到数组中的
我有组(ObservableCollection 类型) 每组包括一个项目(集合类型)。 我有一个组集合(ObservableCollection 类型)每个组都有一个项目集合(