类似于Excel的ListView筛选

时间:2019-01-14 13:31:37

标签: wpf listview filter

我正在尝试过滤类似于Excel的Listview。

我需要什么:  -升序/降序排序
 -直接搜索功能
 -用于显示所有或仅选中的复选框的复选框

当我单击列标题时,应该显示这些过滤器选项,并且在选择过滤器方法之后,应该根据单击的过滤器/排序方法来更新列表视图。

实际上,我可以创建一个普通的Listview并用结构列表中的值填充它

Template: What I'm looking for

我的XAML:

<ListView x:Name="lVTable"  SelectionMode="Single" Margin="28,231,32,26" HorizontalContentAlignment="Center">
    <RowDefinition Height="auto"/>
    <ListView.View>
    <GridView>
        <GridViewColumn DisplayMemberBinding="{Binding Column1}" Width="120">
            <GridViewColumnHeader Content ="Column1"/>
        </GridViewColumn>

        <GridViewColumn DisplayMemberBinding="{Binding Column2}" Width="120">
            <GridViewColumnHeader Content =" Column2"/>
        </GridViewColumn>

        <GridViewColumn DisplayMemberBinding="{Binding Column3}" Width="220">
            <GridViewColumnHeader Content =" Column3"/>
        </GridViewColumn>

        <GridViewColumn DisplayMemberBinding="{Binding Column4}" Width="220">
            <GridViewColumnHeader Content =" Column4"/>
        </GridViewColumn>

        <GridViewColumn DisplayMemberBinding="{Binding Column5}" Width="220">
            <GridViewColumnHeader Content =" Column5"/>
        </GridViewColumn>

        <GridViewColumn DisplayMemberBinding="{Binding Column6}" Width="220">
            <GridViewColumnHeader Content =" Column6"/>
        </GridViewColumn>

        <GridViewColumn DisplayMemberBinding="{Binding Column7}" Width="220">
            <GridViewColumnHeader Content =" Column7"/>
        </GridViewColumn>

    </GridView>
</ListView.View></ListView>  

我的代码后面:

public struct ListViewElement
{
   public string Column1 { get; set; }
   public string Column2 { get; set; }
   public string Column3 { get; set; }
   public string Column4 { get; set; }
   public string Column5 { get; set; }
   public string Column6 { get; set; }
   public string Column7 { get; set; }
   public string Column8 { get; set; } //Not for listview 
   public string Column9 { get; set; } //Not for listview
}
public List<ListViewElement> listViewElements;

public void Button_Click(object sender, RoutedEventArgs e)
{
    ListViewElement listViewElement1 = new ListViewElement
    {
        Column1 = "Object1",
        Column2 = "APP1",
        Column3 = "File1",
        Column4 = "0.1.4",
        Column5 = "0.1.4",
        Column6 = "Some Information",
        Column7 = "Okay"
    };
   listViewElements.Add(listViewElement1);

   ListViewElement listViewElement2 = new ListViewElement
   {
        Column1 = "Object2",
        Column2 = "App1",
        Column3 = "Var1",
        Column4 = "0.1.4",
        Column5 = "0.1.3",
        Column6 = "Some Information",
        Column7 = "Not Okay"
    };
    listViewElements.Add(listViewElement2);

    ListViewElement listViewElement3 = new ListViewElement
    {
        Column1 = "Object1",
        Column2 = "App1",
        Column3 = "File2",
        Column4 = "0.1.4",
        Column5 = "0.1.3",
        Column6 = "Some Information,
        Column7 = "Not Okay"
    };
    listViewElements.Add(listViewElement3);

    ListViewElement listViewElement4 = new ListViewElement
    {
         Column1 = "Object1",
         Column2 = "App2",
         Column3 = "File2",
         Column4 = "0.1.4",
         Column5 = "0.1.4",
         Column6 = "Some Information,
         Column7 = "Okay"
    };
    listViewElements.Add(listViewElement4);

    foreach(ListViewElement element in listViewElements)
    {
        var row = new { Column1 = element.Column1, Column2 = element.Column2, Column3 = element.Column3, Column4 = element.Column4, Column5 = element.Column5, Column6 = element.Column6, Column7 = .Column7};
        lVTable.Items.Add(new ListViewItem { Content = row, Background = Brushes.White });
    }   }

如何创建这样的->“过滤器”选项框<-

  • 点击列标题后显示
  • 带有用于以下目的的按钮:
    • 升序/降序
    • 选择所有/特定元素
    • 带有用于直接搜索的文本字段
  • 可用于所有列
  • 单击“确定”后删除
  • 并尝试在列表视图中尝试他选择的方法吗?

0 个答案:

没有答案