更新数据源后,Telerik 的 RadListView 未绘制项目
Telerik's RadListView is not drawing items after updating datasource
我正在使用 RadListView control from Telerik UI for WindowsForms。
我一步一步做的是这样的:
为控件设置数据源。
手动向下滚动垂直滚动条
计时器计时结束后,数据源会在运行时更新。
此时,在滚动和数据源发生变化后,滚动条保持在相同的位置(如我所料),但列表视图没有正确更新布局,任何项目都在控件中绘制。
我发现解决此问题的唯一方法是手动向上滚动(仅向上)。
我尝试使用 EnsureItemVisible
、PerformLayout
、Invalidate
和 ScrollTo
方法,我还切换了 Visible
属性,但任何解决布局问题的方法。
我该如何解决?
您是否尝试调用 Application.DoEvents()?
ListView 未更新,因为您的数据源不支持通知。为了实现这一点,您的数据源应该实现 IBIndingList,而您的对象应该实现 INotifyPropertyChanged。例如,您可以使用 BindingList 而不是 IEnumerable。 this article 中提供了这方面的示例 - 尽管本文使用 RadGridView,但在数据源方面,方法是相同的。
那么您可以查看 RadListView 本身的 DataBinding article。
我正在使用 RadListView control from Telerik UI for WindowsForms。
我一步一步做的是这样的:
为控件设置数据源。
手动向下滚动垂直滚动条
计时器计时结束后,数据源会在运行时更新。
此时,在滚动和数据源发生变化后,滚动条保持在相同的位置(如我所料),但列表视图没有正确更新布局,任何项目都在控件中绘制。
我发现解决此问题的唯一方法是手动向上滚动(仅向上)。
我尝试使用 EnsureItemVisible
、PerformLayout
、Invalidate
和 ScrollTo
方法,我还切换了 Visible
属性,但任何解决布局问题的方法。
我该如何解决?
您是否尝试调用 Application.DoEvents()?
ListView 未更新,因为您的数据源不支持通知。为了实现这一点,您的数据源应该实现 IBIndingList,而您的对象应该实现 INotifyPropertyChanged。例如,您可以使用 BindingList 而不是 IEnumerable。 this article 中提供了这方面的示例 - 尽管本文使用 RadGridView,但在数据源方面,方法是相同的。
那么您可以查看 RadListView 本身的 DataBinding article。