问题标签 [observablecollection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - 修改 ObservableCollection在运行时声明为资源
我有一堆从数据库填充的 ObservableCollections。很有可能在应用程序的生命周期中这些集合会增长,我需要它们每 30 秒左右更新一次。
我将集合声明为 App.xaml 中合并字典中的资源。我可以使用 Application.FindResource() 方法很好地获取这些集合,但是当我再次调用 FindResource 时,我对结果集合所做的任何更改都不会反映出来。也许我天真地认为会是这样。
我是对还是错?
wpf - WPF 绑定到 ObjectDataProvider 方法并检测返回值依赖关系
我正在使用 ObjectDataProvider 绑定到一个方法。公开此方法的类包含 T:INofifyChanged 类型的 ObservableCollection。我的问题是,因为方法返回值取决于它的 ObservableCollection 的值,所以我需要在 ObservableCollection 以任何方式更改时更新绑定。
简而言之,该方法的返回值取决于其他因素,我希望此方法绑定在它的依赖关系发生变化时刷新。
我如何让绑定控件知道方法返回值何时不同?
wpf - WPF数据绑定,替换源对象
我有一些 UI 绑定到 T 类型的 ObservableCollection,其中“T”实现了 INotifyProperty 已正确更改。
问题是我需要在运行时完全换掉 ObservableCollection,因为它是从 SQL 调用中填充的。这显然会弄乱整个绑定,并且不会触发任何更改通知。
如何在运行时替换源对象而不丢失绑定?
代码大致是这样的
wpf - INotifyPropertyChanged 不适用于 ObservableCollection 属性
我有一个名为IssuesView
which implements的类INotifyPropertyChanged
。此类拥有一个ObservableCollection<Issue>
并将其公开为一个DependencyProperty
名为的问题以供Bindings
. 它定义如下 -
我有一个这样声明的测试页-
类IssuesView
定义在Application.Resources
.
现在在按钮的事件 hadnler 我有这个代码 -
once 是一个简单的布尔值,用于测试集合的突变与重新填充。
第一次单击按钮会更改集合的项,并且 UI 会正确更新,因为这些项实现了 INotifyPropertyChanged,但第二次单击会重新填充集合,但不会更新 UI,即使事件不为 null 并且正确触发也是如此。
为什么第二次点击时 UI 不更新?我怎样才能使它重新填充集合将导致 UI 更新?
c# - 合并的 ObservableCollection
我有两个 ObservableCollections,我需要将它们一起显示在一个 ListView 控件中。为此,我创建了 MergedCollection,它将这两个集合呈现为一个 ObservableCollection。这样,我可以将 ListView.ItemsSource 设置为我的合并集合,并列出两个集合。添加工作正常,但是当我尝试删除项目时,会显示未处理的异常:
MergedCollection 的代码如下:
问候
c# - 如何更新 ObservableCollection 的现有元素?
我有一个绑定到 WPF 列表框的 ObservableCollection 实例,该列表框具有两个单独的数据模板(一个用于显示,一个用于编辑)。用于编辑的数据模板在文本框上有一个单向绑定和一个保存按钮。
我需要进行哪些更改,以便当我按下保存按钮时(将列表项置于编辑模式后),我更改文本框的值以替换 ObservableCollection(和显示)中的值?
c# - 在 ObservableCollection 中识别和替换对象的最有效方法是什么?
我有一个方法可以接收已更改属性的客户对象,我想通过替换该对象的旧版本将其保存回主数据存储中。
有谁知道在下面编写伪代码的正确 C# 方法?
c# - 为什么 ObservableCollection 隐藏 INotifyPropertyChanged.PropertyChanged
我有一个派生自 ObservableCollection 的类。我想向这个类添加一些属性(不是集合中的项目),但发现它的 PropertyChanged 实现是受保护的。由于它受到保护,我认为这就是我在 XAML 中绑定到这些新属性的尝试失败的原因。
如果没有创建一个挂起这个实现 INotifyPropertyChanged 并容纳这些新属性的类的对象,有没有一种我忽略的方法?
c# - ObservableCollection 和 ListBoxItem DataTemplate 生成问题
ObservableCollection 发生了一些奇怪的事情。
我有以下代码:
我在这里要做的是控制有多少项目进入 ObservableCollection _display。现在,在这个 for 循环中,您可以看到元素被添加,直到总元素高度(+偏移)大于列表框本身。
现在,这很奇怪,在这个 for 循环之后 elementsHeight 等于 0。(即使 lbi 不为空,CalculateItemsHeight 在所有循环迭代中都返回 0)似乎未创建数据模板中定义的 UI 元素......
然而。
现在,如果我在 _display.Add(verse) 之后放置一些 MessageBoxes,您可以看到 CalculateItemsHeight 实际上返回项目的高度。
如图所示修改 for 循环后,最后一个 MessageBox实际上显示了所有已处理元素的实际高度。
我的问题是 - UI 元素是什么时候真正创建的?似乎它是在 MessageBox 显示期间的某个地方完成的。这种行为对我来说很奇怪,也许它与线程有关,不确定。
添加到 _display ObservableCollection 显然会立即创建一个项目,而不是它的视觉元素(但是它们是在之后添加的,我只是不知道确切的时间)。如何在不必弹出消息框的情况下执行相同的行为?