我正在尝试过滤类似于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 });
} }
如何创建这样的->“过滤器”选项框<-