void ShellListView_OnListViewColumnDropDownClicked(object sender, ListViewColumnDropDownArgs e) {
//TODO: Add Events for when an item's check has been changed
var packUri = "pack://application:,,,/BetterExplorer;component/Images/stack16.png";
var menu = new ListviewColumnDropDown() {
Placement = PlacementMode.AbsolutePoint,
HorizontalOffset = e.ActionPoint.X,
VerticalOffset = e.ActionPoint.Y,
IsOpen = true,
StaysOpen = true,
};
var Things = new List<string>();
var SelectedColumn = this._ShellListView.Collumns[e.ColumnIndex];
if (SelectedColumn.CollumnType == typeof(String)) {
Things.AddRange(new[] { "0 - 9", "A - H", "I - P", "Q - Z", "Other" });
} else if (SelectedColumn.CollumnType == typeof(DateTime)) {
var Container = new ItemsControl();
Container.Items.Add(new MenuItem() { Icon = new ImageSourceConverter().ConvertFromString(packUri) as ImageSource, Header = "Select a date or date range:", HorizontalContentAlignment = HorizontalAlignment.Stretch, HorizontalAlignment = HorizontalAlignment.Stretch, IsCheckable = true, StaysOpenOnClick = true });
Container.Items.Add(new Calendar() { SelectionMode = CalendarSelectionMode.SingleRange, Margin = new Thickness(30, 0, 0, 0) });
menu.AddItem(Container);
Things.AddRange(new[] { "A long time ago", "Earlier this year", "Earlier this month", "Last week", "Today" });
} else if (SelectedColumn.CollumnType == typeof(long)) {
Things.AddRange(new[] { "Tiny (0 - 10 KB)", "Small (10 - 100 KB)", "Medium (100 KB - 1 MB)", "Large (1 - 16 MB)", "Huge (16 - 128 MB)", "Unspecified" });
} else if (SelectedColumn.CollumnType == typeof(Type)) {
var distictItems = this._ShellListView.Items.Select(s => s.GetPropertyValue(SelectedColumn.pkey, SelectedColumn.CollumnType).Value).Distinct().Cast<String>().ToArray().OrderBy(o => o);
Things.AddRange(distictItems);
}
foreach (var item in Things) {
var mnuItem = new MenuItem() {
Icon = new ImageSourceConverter().ConvertFromString(packUri) as ImageSource,
IsCheckable = true,
Header = item,
HorizontalContentAlignment = HorizontalAlignment.Stretch,
HorizontalAlignment = HorizontalAlignment.Stretch,
StaysOpenOnClick = true
};
mnuItem.Click += new RoutedEventHandler(delegate (object s, RoutedEventArgs re) {
var over = Mouse.DirectlyOver;
if (!(over is Image)) {
menu.IsOpen = false;
}
});
menu.AddItem(mnuItem);
}
}