我需要限制列表框中选定项目的数量为2.如何做到这一点?是否有可能避免使用事件并在XAML中执行此操作?WPF。列表框。如何限制所选项目的最大值为2?
3
A
回答
8
就我所知,没有内置的方法可以做到这一点,所以您将不得不编写一些代码。
您可以通过设置SelectionMode
到Multiple
或Extended
(见here为差)设置你的ListBox为多选,并附着到SelectionChanged
事件。当事件发生时,修改选择你认为合适的方式(你如何去做将取决于你希望如何工作......如果他们选择了第三个,它会马上被移除吗?还是第一个获得删除 - 有效的FIFO或LIFO删除)。
编辑:
我的坏,我已经挂了错误的文章。
1
以下是如何限制选择两个项目只
对于下面的XAML定义ListView的一个例子
<ListView x:Name="MyListView" ItemsSource="{Binding Path=ParentSection.MyListItems}" BorderThickness="0"
SelectionMode="Multiple" ScrollViewer.HorizontalScrollBarVisibility="Hidden"
mvvm:FrameworkElementBehaviors.IgnoreMouseWheel="True"
SelectionChanged="MyListView_SelectionChanged">
<ListView.View>
<!--Your list view content here -->
</ListView.View>
</ListView>
事件会像下面
public void MyListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (this.MyListView.SelectedItems.Count > 2)
{
this.MyListView.SelectedItems.RemoveAt(0);
}
}
+0
感谢这个例子!如果我是OP,我会选择它作为我的解决方案。 – 2015-03-07 16:40:01
1
我做了一个这样的行为,我可以将我想要选择的元素的数量绑定到一个依赖属性。
它这样使用,连接到ListView
<i:Interaction.Behaviors>
<behaviors:LimitSelectionBehavior Limit="2" />
</i:Interaction.Behaviors>
这里是行为类。 Remove
可以修改为取消选择到Limit
,现在它只是取消选择所有新添加的。
public class LimitSelectionBehavior : Behavior<ListView>
{
public static readonly DependencyProperty LimitProperty;
static LimitSelectionBehavior()
{
LimitProperty = DependencyProperty.Register("Limit", typeof(int), typeof(LimitSelectionBehavior), new PropertyMetadata(default(int)));
}
public int Limit
{
get { return (int) GetValue(LimitProperty); }
set { SetValue(LimitProperty, value); }
}
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.SelectionChanged += OnSelectionChanged;
}
protected override void OnDetaching()
{
base.OnDetaching();
AssociatedObject.SelectionChanged -= OnSelectionChanged;
}
private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (AssociatedObject.SelectedItems.Count <= Limit)
return;
foreach (var added in e.AddedItems)
{
AssociatedObject.SelectedItems.Remove(added);
}
}
}
相关问题
- 1. 如何限制列表框中的最大数值(条目)
- 2. 将选项值限制为最大值
- 3. 如何获得所选项目在WPF复选框列表框
- 4. c#列表框项目大小限制
- 5. 自定义列表框:限制最大项目数
- 6. 列表框:如何在取消最大限制后取消选择/取消选择项目?
- 7. 快速筛选列表框项目wpf?
- 8. WPF:列表框,居中选定项目
- 9. WPF - 阻止列表框项目选择
- 10. WPF列表框选择仅使用xaml的所有项目
- 11. 如何获取WPF列表框中的选中项目?
- 12. “选定项目的最大数量” - 列表框的验证器
- 13. 列表框ClearSelected法叶所选项目
- 14. 列表框中选择所有项目
- 15. WPF列表框选定项目调出另一个子列表框项目
- 16. 如何从列表框中获取列表框项目wpf
- 17. 如何在选择框中限制选项名称的大小?
- 18. 如何限制jquery多选中所选项目的空间
- 19. 如何更改Xul列表框中所选项目的颜色?
- 20. 如何获取列表框中所选项目的索引?
- 21. 限制Sharepoint列表项目
- 22. 如何选择所有项目在选择所有菜单项时选择黑莓的列表框复选框
- 23. MVVM中的列表视图复选框的选定项目WPF
- 24. 如何限制计数的最大值
- 25. 放大列表框项目
- 26. 如何更改所选项目(对象)中的列表框项目颜色?
- 27. 如何查找列表框中的最大值和最小值
- 28. 将列表限制为最后5个项目
- 29. 列表框以及如何对所选项目执行操作
- 30. WPF ItemControl:将项目的类型限制为特定的项目
NB:在WPF中,将SelectionMode枚举[是不同的。](http://msdn.microsoft.com/en-us/library/system.windows.controls.selectionmode.aspx) – 2011-05-18 21:34:51
@djacobson - 哎呦。我的错。感谢您的更正。 – Tim 2011-05-18 21:42:12
事件发生时,程序如何取消选择所选项目? – user983731 2011-11-03 18:47:13