- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我已经实现了一种类似于 this post 中描述的选择模式使用 ViewModel 存储 IsSelected 值,并通过将 ListViewItem.IsSelected
绑定(bind)到 ViewModel IsSelected:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=IsSelected}"/>
</Style>
</ListView.ItemContainerStyle>
一般都能用,但我遇到了一个严重的问题。通过使用 VirtualizingStackPanel
作为 ListView 中的面板,只会创建可见的 ListViewItem
。如果我使用“Ctrl+A”选择所有项目,或者在第一个项目上使用快捷键组合(如“Shift+Ctrl+End”),所有项目都会被选中,但对于不可见项目,ViewModel 不会获得其 IsSelected设置为真。这是合乎逻辑的,因为如果未创建 ListViewItem
,绑定(bind)将无法工作。
有没有人遇到同样的问题,并找到了解决方案(除了不使用 VirtualizingStackPanel
)?
最佳答案
我在 MVVM 模式中找到了另一种处理选择的方法,它解决了我的问题。不是在 View 模型中维护选择,而是从 ListView/ListBox 中检索选择,并将其作为参数传递给命令。全部在 XAML 中完成:
<ListView
x:Name="_items"
ItemsSource="{Binding Items}" ... />
<Button
Content="Remove Selected"
Command="{Binding RemoveSelectedItemsCommand}"
CommandParameter="{Binding ElementName=_items, Path=SelectedItems}"/>
在我的 ViewModel 中:
private void RemoveSelection(object parameter)
{
IList selection = (IList)parameter;
...
}
关于wpf - VirtualizingStackPanel + MVVM + 多选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7429931/
我正在开发一个应用程序,该应用程序应该显示从其他地方(例如,数据库)加载的大量项目,以列表/网格状的形式存在。 将所有项目一直保存在内存中似乎是一种浪费,我正在寻找方法来虚拟化我的列表的一部分。 Vi
我有以下列表框: 这个列表框应该包含大约 1
我想要一个关于如何为 ItemsControl 实现虚拟化堆栈面板的简单描述。数据绑定(bind)到 ObservableCollection在我的 MVVM 中。 我有一个 ItemsControl
VirtualizingStackPanel 的主要缺点是什么?如果它没有任何,那么为什么它不作为 ItemsControl 中的默认面板行为/模板? 最佳答案 MSDN page在 Virtuali
我在 wpf 中有一个 ListView 用于显示字段列表;基于属性值,某些字段可以在运行时折叠。它工作正常,除了 ListVIew 不会折叠为 ListViewItem 保留的空间,这些空间在运行时
我正在按照此处介绍的教程进行操作: http://blogs.msdn.com/b/dancre/archive/tags/virtualizingtilepanel/ 并且在他们的实现中,他们在 v
我已经实现了一种类似于 this post 中描述的选择模式。使用 ViewModel 存储 IsSelected 值,并通过绑定(bind) ListViewItem.IsSelected到 Vie
有没有办法让 Windows Phone 中的 VirtualizingStackPanel 只清理/重新虚拟化尚未加载的项目? 为了进一步解释我想要的内容:当我使用带有图像的沉重 ItemTempl
我已经实现了一种类似于 this post 中描述的选择模式使用 ViewModel 存储 IsSelected 值,并通过将 ListViewItem.IsSelected 绑定(bind)到 Vi
我正在使用 ItemsControl 在其 ControlTemplate 中使用 VirtualizingStackPanel。在某种程度上,我已经让虚拟化工作了。我已将调试语句放入我的 DataT
我正在使用 VirtualizingStackPanel 和 textBlock,我的 XAML 代码如下所示,
我在使用 HierarchicalDataTemplate 和 VirtualizingStackPanel 的 wpf TreeView 时遇到问题。使用下面提供的代码,我运行应用程序并展开所有 T
我这里有个问题,我想在 TreeView 中显示一些项目,大约 100.000 个元素。如果我使用默认的 WPF TreeView,一切似乎都有效,但如果我使用自定义 TreeView(目前只是一个
我有一个列表框,里面有很多渲染成本很高的项目。然而,VirtualizingStackPanel 通过只渲染可见项来处理这个问题。我想覆盖 ScrollViewer 的控件模板,因为默认的控件模板在水
这个问题主要针对 Windows Phone 开发人员,但我想任何 XAML 技术都适用。 我的 VirtualizingStackPanel效果很好,我可以看到内存使用的改进。但是,我在 ListB
我有一个 ListBox可能有很多行模板化数据库记录,包括 Image , 绑定(bind)到 ObservableCollection .有时收藏品可以容纳数千件元素。 性能很棒,但滚动是默认的跳跃
VirtualizingStackPanel.VirtualizationMode = Recycling/Standard 中实际发生了什么? 最佳答案 当VirtualizationMode设置为
我想向我的列表框添加标题,我使用模板来完成此操作。问题是,如果我扩展 ListBox 的模板,似乎列表框的 virtualizingstackpanel 不再按预期工作:它在我滚动之前加载所有内容。
我正在使用带有 CellEditingTemplates 的 DataGrid。作为 ItemsSource,使用了一个数据虚拟化集合(AlphaChiTech 解决方案),它一次只能按需获取 100
首先,免责声明,我正在使用 .net 3.5 的 virtualizingstackpanel。如果您在未来的版本中有不同的行为,请告诉我。使用 ListView 设置测试用例相对简单,您可以对其进行
我是一名优秀的程序员,十分优秀!