作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Window 中,我使用带有 CollectionViewSource 的自定义 CollectionViewType 对 ListBox 中的项目进行分组(< em>EmployeeCollectionView).
主窗口.xaml:
<Window x:Class="ListBoxSelectionMode.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ListBoxSelectionMode">
<Window.Resources>
<CollectionViewSource x:Key="EmployeesSource" Source="{Binding Employees}" CollectionViewType="local:EmployeeCollectionView" />
<DataTemplate x:Key="EmployeeTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding FirstName}" />
<TextBlock Text="{Binding LastName}" />
</StackPanel>
</DataTemplate>
</Window.Resources>
<ListBox ItemsSource="{Binding Source={StaticResource EmployeesSource}}"
ItemTemplate="{StaticResource EmployeeTemplate}"
SelectionMode="Extended">
<ListBox.GroupStyle>
<x:Static Member="GroupStyle.Default"/>
</ListBox.GroupStyle>
</ListBox>
MainWindow.xaml.cs:
public partial class MainWindow : Window
{
public IEnumerable<Employee> Employees { get; set; }
public MainWindow()
{
InitializeComponent();
Employees = new List<Employee>
{
new Employee { FirstName = "FirstName1", LastName = "LastName1", HireDate = new DateTime(1970, 1, 1) },
new Employee { FirstName = "FirstName2", LastName = "LastName2", HireDate = new DateTime(1970, 1, 1) },
new Employee { FirstName = "FirstName3", LastName = "LastName3", HireDate = new DateTime(1980, 1, 1) },
new Employee { FirstName = "FirstName4", LastName = "LastName4", HireDate = new DateTime(1980, 1, 1) },
new Employee { FirstName = "FirstName5", LastName = "LastName5", HireDate = new DateTime(1990, 1, 1) },
new Employee { FirstName = "FirstName6", LastName = "LastName6", HireDate = new DateTime(1990, 1, 1) }
};
DataContext = this;
}
}
EmployeeCollectionView.cs:
class EmployeeCollectionView : ListCollectionView
{
private readonly IList<EmployeeCollectionViewGroup> _groups;
public override ReadOnlyObservableCollection<object> Groups
{
get { return new ReadOnlyObservableCollection<object>(new ObservableCollection<object>(_groups)); }
}
public EmployeeCollectionView(IList list)
: base(list)
{
_groups = list
.OfType<Employee>()
.GroupBy(x => x.HireDate)
.Select(x => new EmployeeCollectionViewGroup(x.Key, x))
.ToList();
}
}
EmployeeCollectionViewGroup.cs:
class EmployeeCollectionViewGroup : CollectionViewGroup
{
public EmployeeCollectionViewGroup(object name, IEnumerable<object> protectedItems)
: base(name)
{
foreach (var protectedItem in protectedItems)
ProtectedItems.Add(protectedItem);
}
public override bool IsBottomLevel
{
get { return true; }
}
}
问题:为什么我不能使用 SHIFT 键选择多个项目?
编辑:使用 CTRLworks 进行多选。
最佳答案
您是否尝试过按下 CTRL 键而不是 SHIFT 键?在您的列表声明之后移动 InitializeComponent。
关于c# - 自定义 CollectionViewType 不支持使用 shift 键进行多选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37878548/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!