如何在WPF中的分组列表中显示多个集?

如何在WPF中的分组列表中显示多个集?

我想创建一个分成若干组,使得从任何一组物品都可以隐藏列表。

现在,每个组的项目在一个单独的收集和所有集合(共5个)的单个对象举行举行。但是如果它能使代码更简单,我可以修改它们的存储方式。

回答:

试试这个,列表框的易变化的ItemTemplate与列表框扩展器。 例如: ScreenShot XAML:

<Window x:Class="WpfApp1.MainWindow" 

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:local="clr-namespace:WpfApp1"

Title="MainWindow" Height="350" Width="525">

<Window.DataContext>

<local:MainWindowVM/>

</Window.DataContext>

<Grid>

<ListView ItemsSource="{Binding ItemsList}">

<ListView.ItemTemplate>

<DataTemplate>

<Expander Header="{Binding Name}" >

<ListView ItemsSource="{Binding Items}"/>

</Expander>

</DataTemplate>

</ListView.ItemTemplate>

</ListView>

</Grid>

视图模型:

public class MainWindowVM 

{

public MainWindowVM()

{

ItemsList = new List<Group>();

var items = new List<Item>();

items.Add(new Item("Item1"));

items.Add(new Item("Item2"));

items.Add(new Item("Item3"));

//items.Add("Item4");

//items.Add("Item5");

ItemsList.Add(new Group()

{

Name = "List1",

Items = items

});

items.Add(new Item("Item4"));

ItemsList.Add(new Group()

{

Name = "List2",

Items = items

});

items.Add(new Item("Item5"));

ItemsList.Add(new Group()

{

Name = "List3",

Items = items

});

}

public List<Group> ItemsList { get; set; }

}

public class Group

{

public string Name { get; set; }

public List<Item> Items { get; set; }

public override string ToString()

{

return Name;

}

}

public class Item

{

public Item(string name)

{

Name = name;

}

public string Name { get; set; }

public override string ToString()

{

return Name;

}

}

回答:

只要你与WPF框架,你可以定义ListBox.GroupStyle以及定期的风格内部物品。然后结合你的列表框CollectionViewSource类似的东西:

ICollectionView view = CollectionViewSource.GetDefaultView(*your-collection-here*); 

view.GroupDescriptions.Add(new PropertyGroupDescription(*your-grouping-field-here*));

view.SortDescriptions.Add(new SortDescription((*your-grouping-field-here*, ListSortDirection.Ascending));

your-listbox-here.ItemsSource = view;

所有学分去这里:http://www.c-sharpcorner.com/uploadfile/dpatra/grouping-and-sorting-in-listbox-in-wpf

要展开/折叠组,您可以添加,保持当前状态的布尔属性(折叠或展开),并采取这为您的样式(让的说,使之可见为展开的项目只,变“展开/折叠” V形图标等)

以上是 如何在WPF中的分组列表中显示多个集? 的全部内容, 来源链接: utcz.com/qa/265907.html

回到顶部