问题标签 [collectionview]

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.

0 投票
1 回答
281 浏览

wpf - 异步调用 CollectionView.MoveCurrentToFirst?

异步调用 CollectionView.MoveCurrentToFirst?

0 投票
12 回答
36296 浏览

.net - 我在哪里可以获得线程安全的 CollectionView?

在后台线程上更新业务对象集合时,我收到以下错误消息:

这种类型的 CollectionView 不支持从不同于 Dispatcher 线程的线程更改其 SourceCollection。

好的,这是有道理的。但它也引出了一个问题,CollectionView 的哪个版本支持多线程以及如何让我的对象使用它?

0 投票
1 回答
2712 浏览

mvvm - 具有集合视图项目源的组合框不会在模型更改时更新选择框项目

很抱歉之前的冗长帖子。这是我的简明(!)描述。

我将集合视图作为 itemsSource 绑定到组合框,并将其 selectedvalue 与我的视图模型中的属性绑定。我必须保持 IsSynchronizedWithCurrentItem="False"。

我更改视图的源列表,然后刷新视图。更改(添加、删除、编辑)的项目正确显示在组合的项目列表中。但问题出在所选项目上。当我更改它的属性(也是组合的显示成员路径)时,更改的属性值不会反映在组合的选择框上。如果您打开组合下拉列表,它会正确显示在项目列表中,但不会显示在选择框上。

现在,如果我在 XAML 中将组合框标记更改为 Listbox(保持所有属性不变),那么当所选项目的 displaymember 属性值更新时,更改会反映在列表框的所选项目上。

为什么会出现这个问题?

仅供参考:

  1. 我的视图模型具有 EmployeeCollectionView 和 SelectedEmployeeId 属性,它们分别绑定为 ItemsSource 和 SelectedValue。此 VM 实现 INotifyPropertyChanged 接口。

  2. 我的核心员工类(其中的列表是 EmployeeCollectionView 的来源)只是一个没有 INotifyPropertyChanged 的​​模型类。

  3. DisplayMemberPath 是员工模型类的“名称”属性。我通过某种方式对此进行了更改,并希望组合选择框能够更新该值。

  4. 我尝试通过将 SelectedEmployeeId 设置为 0(它正确地从 itemsSource 中选择虚拟“-- Select All -”员工条目)和旧的选定值来刷新 SelectedEmployeeId。但是没有用。旧值带我回到旧标签。物品集合虽然有最新条目。

  5. 当我在视图刷新之前和刷新后创建组合框的 IsEditable=True 时,我使 IsEditable=False 事情正常进行!

但这是一个补丁,没有必要。

谢谢

维尼特·桑赫

0 投票
0 回答
1589 浏览

wpf - WPF:如何使用 ICollectionView 和 IEditableCollectionView 等视图

我了解语法,但不了解如何真正使用它。在许多基本场景中都很清楚,但是一旦它变得有点高级,我就开始头疼。

例如,有许多不同的视图,但通常不清楚使用哪个视图。您也应该始终只使用一种或混合搭配。您是否将视图用作 ItemsControls 的 itemssource?

我要给出一个场景。我有来自数据库的项目,我需要在应用程序中显示有关信息,还允许编辑和添加新项目。项目形成层次结构,模型具有不同的类型。所以顶层有孩子,然后他们有孩子。

我可以在 TreeView 或某些项目控件中显示它。这里的问题是我倾向于绑定到根元素的 children 属性,它返回一个儿童列表。现在孩子们并没有真正在视图中,就像我不能立即调用 editview.addnew() 或过滤孩子一样。问题是我如何确保孩子们也在视图中和他们的孩子等等。如果模型返回一个视图,我应该为每个子类型甚至每个父创建单独的视图吗?

另一件事是,如果我允许编辑,我应该将 Collections 直接放入 IEditableCollectionView 还是先将其包装在 ICollectionView 中(为什么会更好)?

是否有一个很好的指南来使用不仅仅是纯基础的视图?

0 投票
2 回答
12003 浏览

c# - WPF ICollectionView 过滤器重置

我有一个CollectionView派生自ObservableCollection

我的问题是,当过滤器的结果为空时,我想清除过滤器,并用其他条件重新过滤,但CollectionView总是为空。

我尝试通过以下方式重置过滤器:

但他们都没有工作。

您能否提供一些建议如何在 a 上重置过滤器CollectionView

0 投票
1 回答
1906 浏览

wpf - 访问 WPF DataGrid GroupItem DataTemplate 中的基础 ViewModel 属性

我有一个分组的 WPF DataGrid(标准的 Microsoft 数据网格),为我们的用户代表 UI 上的一些数据。

为了显示分组区域内的总数,我们在 XAML 中重写 GroupItem DataTemplate,如下所示:

目前,在运行时,TextBlock 文本绑定到 DataContext,这是一个 CollectionViewGroup,这很有意义,因为网格绑定到了一个包含我们数据源的 CollectionView。

但是,CollectionViewGroup 非常有限,无法访问其包含的 ViewModel,我们在其中存储属性,例如放置组的位置(我们在第一次布局网格时从列中收集坐标),并且需要绑定到例如,我们可以在组中给定列的上方/下方显示总数。

简而言之,我们试图从以 GroupItem 为目标的 DataTemplate 中访问的不仅仅是 CollectionView 对象。任何有关如何执行此操作的输入(或者是否有更好的方法来获取每列的总和以显示在组总模板中)表示赞赏。

编辑:到目前为止,一种解决方法是在我们的项目上有一个“父 ViewModel”属性,虽然这会使模型膨胀,但我希望有一种更直接的方法来做到这一点。

0 投票
2 回答
3053 浏览

wpf - 分组的 CollectionView 的组可以水平呈现吗?

根据这个答案,我正在实现一个 ListBox,其 ItemsPanel 是 WrapPanel ,但有一个转折:我的 ItemsSource 是一个分组的CollectionView。将 aGroupStyle应用于我的 ListBox 后,该问题中显示的换行不起作用:组始终垂直显示。

窥探我的应用程序,原因如下:

Snoop 在 GroupItem 中显示 WrapPanel

如您所见,WrapPanel,定义为我的ListBox 的ItemsPanelTemplate,出现在每个GroupItem的ItemsPresenter 中;创建一个隐式的、垂直方向的 StackPanel(粉红色框中的顶部项目)以包含 GroupItems 本身。

有没有办法覆盖这种行为,所以 GroupItems 被放置在 WrapPanel 中?我是否必须重新模板化整个 ListBox?

更新:为了说明我对 ListBox 和 CollectionView 分组的实际操作,让我发布一点 XAML:

GroupStyle是它的核心:如果您删除它,GroupItems 不会被渲染,并且 WrapPanel(您可以在上面的屏幕截图中看到出现在 GroupItem 下方)代替屏幕截图中的 (StackPanel) 98 出现。

0 投票
3 回答
5151 浏览

wpf - 过滤的 CollectionView 给出错误的计数

根据文档,过滤后的 CollectionView 的计数应该只是通过过滤器的项目的计数。鉴于此代码:

因此,我希望 testCount1 为 6,而 testCount2 为 3。但是,两者都是 6。如果我手动遍历 CollectionView 并计算项目,我确实得到 3,但 Count 总是返回 6。

我尝试在 CollectionView 上调用 Refresh,只是想看看这是否会纠正结果,但没有任何变化。文档有错吗?CollectionView 中是否有错误?我做错了什么我看不到的事情吗?

0 投票
1 回答
2764 浏览

c# - 谓语可以吗 for CollectionView.Filter be in a different class?

I have a TagTypeController class that provides a collection view to a controller for a WPF UserControl, which holds a private reference to the collection view.



I have a TagTypeController class that provides a collection view to a controller for a WPF UserControl, which holds a private reference to the collection view.

In the TagTypeController, when creating the CollectionView, I'm setting the filter delegate

I would like to locate all the logic for filtering, etc. of that collectionview in the TagTypeController class. The problem is, when the text changes in the TextBox of the UserControl, I'm responding to that event by delegating to the controller for the UserControl. When I ask the tagTypeList to refresh, it does not call the filterTagTypes method. Is it not possible to have the filter delegate in a different class?

Thanks.

EDIT: adding requested code


iis express 7.5 roaming profile visual studio 2010 sp1

Unless I redirect the My Documents folder to a local copy IIS Express fails to start with the following error message: Filename: redirection.config Error: Cannot read configuration file

This happens when starting a new web project from studio or even is I just double click on the iisexpress.exe file.

Any way around this or must I continue to redirec the My Documents folder

0 投票
1 回答
8090 浏览

wpf - GroupStyles 是如何工作的?

我有一个 ListView 控件绑定到ListCollectionViewViewModel 中的一个。

我想尝试对这些项目进行分组,但遇到了一些问题。

我将 VM 中的属性分组设置为开头,然后添加了一个GroupStyle.

C#:

XAML:

但是列表现在只是类别名称,无法查看项目本身。

我并没有完全理解这里发生了什么。GroupStyle当我为我真正绑定的内容创建模板时?除此之外还有其他属性Name吗?

我刚刚添加GroupStyle到我已经创建的 ListView 中,例如在其中包含ItemTemplate. 那是在搞砸GroupStyle吗?

如果列表中的项目属于另一个类,我不想根据它们所属的类的实例进行分组(它有一个 ID)。然后,我会将组名作为该父类的属性。那可能吗?

部分解决方案:

问题出在 ListView 上应用的样式。我不知道这种风格是什么意思。

完整解决方案

我没有ItemsPresenter在我的列表框中ControlTemplate使用 a 选择使用IsItemsHost设置为的面板true。似乎必须使用 ItemsPresenter 才能使 GroupStyling 正常工作。