按依赖性属性值对用户控件进行排序

时间:2018-08-10 21:01:07

标签: c# sorting date

我创建了一个 usercontrol ,该控件具有4个参数Name / Date / Text / Color

  • 这是我的日期值:

C#:

     public static readonly DependencyProperty _date
= DependencyProperty.Register(
"_date_value",
typeof(string),
typeof(date_ctrl),
new PropertyMetadata(null)
);
    public string _date_value
    {
        get { return (string)GetValue(_date); }
        set { SetValue(_date, value); }
    }

我正在通过代码将用户控件添加到 stackpanel 子级中。

现在,我想对该控制器进行排序,我知道如何对数组进行排序和对列表框项目进行排序,但是我如何才能通过诸如 Date 之类的用户控件上的特定属性来对StackPanel子级进行排序?

例如:

堆栈面板子级:

  • Usercontrol1>日期属性>值> 2019/10/5 10:30 AM
  • Usercontrol2>日期属性>值> 2019/9/1上午12:11
  • Usercontrol3>日期属性>值> 2020/11/5 08:08 PM
  • Usercontrol4>日期属性>值> 2018/2/12 01:51 AM

按日期值排序至:

  • Usercontrol4>日期属性>值> 2018/2/12 01:51 AM
  • Usercontrol2>日期属性>值> 2019/9/1上午12:11
  • Usercontrol1>日期属性>值> 2019/10/5 10:30 AM
  • Usercontrol3>日期属性>值> 2020/11/5 08:08 PM
  

日期格式:dd / mm / yy

1 个答案:

答案 0 :(得分:0)

StackPanel只是控件列表。您无法对其进行排序。您可以做的是将控件存储在列表或数组中并对其进行排序,然后将其绑定到StackPanel。

  1. 将控件存储在列表或字典中
  2. 对列表或字典进行排序
  3. 使用以下命令从stackpanel中删除控件: StackPanel.Children.Remove(child)
  4. Foreach列表成员或 使用以下命令将字典添加到StackPanel的控件: StackPanel.Children.Insert(i,child);

理想情况下,您应该使用ListBox / ItemsControl并使用CollectionViewSorce / SortDescription对象来完成此操作。如果可以,您应该遵循MVVM开发方法。这使控件的绑定和排序变得更加容易。有关类似问题的更完整答案,请参见这篇文章:sorting elements in a stackpanel WPF