BetterExplorer.MainWindow.ShellListView_OnListViewColumnDropDownClicked C# (CSharp) Метод

ShellListView_OnListViewColumnDropDownClicked() приватный Метод

private ShellListView_OnListViewColumnDropDownClicked ( object sender, ListViewColumnDropDownArgs e ) : void
sender object
e ListViewColumnDropDownArgs
Результат void
    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);
      }
    }
MainWindow