ListView.Groups Tulajdonság
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Lekéri a vezérlőhöz rendelt objektumok gyűjteményét ListViewGroup .
public:
property System::Windows::Forms::ListViewGroupCollection ^ Groups { System::Windows::Forms::ListViewGroupCollection ^ get(); };
public System.Windows.Forms.ListViewGroupCollection Groups { get; }
member this.Groups : System.Windows.Forms.ListViewGroupCollection
Public ReadOnly Property Groups As ListViewGroupCollection
Tulajdonság értéke
A ListViewGroupCollection vezérlő összes csoportját ListView tartalmazó.
Példák
Az alábbi példakód bemutatja, hogyan használható a csoportosítási funkció az ListView elemek alelemérték szerinti rendszerezésére a részletek nézetben. Ez a csoportosítási forma hasonló a Windows Explorerben használt csoportosításhoz. A példában a csoportok dinamikusan jönnek létre. Minden részhalmazoszlophoz egy csoport jön létre minden egyes egyedi részhalmaz-értékhez. A szülőelem oszlopban minden egyes egyedi kezdőbetűhöz egy csoport jön létre. Ha egy oszlop fejlécére kattint, az elemeket az adott oszlophoz létrehozott csoportokba rendezi. Ha ismét ugyanarra az oszlopfejlécre kattint, az megfordítja a csoportok sorrendjét.
#using <mscorlib.dll>
#using <System.Drawing.dll>
#using <System.dll>
#using <System.Windows.Forms.dll>
using namespace System;
using namespace System::Collections;
using namespace System::Windows::Forms;
public ref class ListViewGroupsExample : public Form
{
private:
ListView^ myListView;
bool isRunningXPOrLater;
// Declare a Hashtable array in which to store the groups.
array<Hashtable^>^ groupTables;
// Declare a variable to store the current grouping column.
int groupColumn;
public:
ListViewGroupsExample()
{
groupColumn = 0;
// Initialize myListView.
myListView = gcnew ListView();
myListView->Dock = DockStyle::Fill;
myListView->View = View::Details;
myListView->Sorting = SortOrder::Ascending;
// Create and initialize column headers for myListView.
ColumnHeader^ columnHeader0 = gcnew ColumnHeader();
columnHeader0->Text = "Title";
columnHeader0->Width = -1;
ColumnHeader^ columnHeader1 = gcnew ColumnHeader();
columnHeader1->Text = "Author";
columnHeader1->Width = -1;
ColumnHeader^ columnHeader2 = gcnew ColumnHeader();
columnHeader2->Text = "Year";
columnHeader2->Width = -1;
// Add the column headers to myListView.
array<ColumnHeader^>^ temp0 = {columnHeader0, columnHeader1, columnHeader2};
myListView->Columns->AddRange(temp0);
// Add a handler for the ColumnClick event.
myListView->ColumnClick +=
gcnew ColumnClickEventHandler(this, &ListViewGroupsExample::myListView_ColumnClick);
// Create items and add them to myListView.
array<String^>^ temp1 = {"Programming Windows", "Petzold, Charles", "1998"};
ListViewItem^ item0 = gcnew ListViewItem( temp1 );
array<String^>^ temp2 = {"Code: The Hidden Language of Computer Hardware and Software",
"Petzold, Charles", "2000"};
ListViewItem^ item1 = gcnew ListViewItem( temp2 );
array<String^>^ temp3 = {"Programming Windows with C#", "Petzold, Charles", "2001"};
ListViewItem^ item2 = gcnew ListViewItem( temp3 );
array<String^>^ temp4 = {"Coding Techniques for Microsoft Visual Basic .NET",
"Connell, John", "2001"};
ListViewItem^ item3 = gcnew ListViewItem( temp4 );
array<String^>^ temp5 = {"C# for Java Developers", "Jones, Allen & Freeman, Adam",
"2002"};
ListViewItem^ item4 = gcnew ListViewItem( temp5 );
array<String^>^ temp6 = {"Microsoft .NET XML Web Services Step by Step",
"Jones, Allen & Freeman, Adam", "2002"};
ListViewItem^ item5 = gcnew ListViewItem( temp6 );
array<ListViewItem^>^ temp7 = {item0, item1, item2, item3, item4, item5};
myListView->Items->AddRange( temp7 );
// Determine whether Windows XP or a later
// operating system is present.
isRunningXPOrLater = false;
if (System::Environment::OSVersion->Version->Major > 5 ||
( System::Environment::OSVersion->Version->Major == 5 &&
System::Environment::OSVersion->Version->Minor >= 1) )
{
isRunningXPOrLater = true;
}
if (isRunningXPOrLater)
{
// Create the groupsTable array and populate it with one
// hash table for each column.
groupTables = gcnew array<Hashtable^>(myListView->Columns->Count);
for (int column = 0; column < myListView->Columns->Count; column++)
{
// Create a hash table containing all the groups
// needed for a single column.
groupTables[column] = CreateGroupsTable(column);
}
// Start with the groups created for the Title column.
SetGroups(0);
}
// Initialize the form.
this->Controls->Add(myListView);
this->Size = System::Drawing::Size(550, 330);
this->Text = "ListView Groups Example";
}
// Groups the items using the groups created for the clicked
// column.
private:
void myListView_ColumnClick(
Object^ /*sender*/, ColumnClickEventArgs^ e)
{
// Set the sort order to ascending when changing
// column groups; otherwise, reverse the sort order.
if ( myListView->Sorting == SortOrder::Descending ||
( isRunningXPOrLater && (e->Column != groupColumn) ) )
{
myListView->Sorting = SortOrder::Ascending;
}
else
{
myListView->Sorting = SortOrder::Descending;
}
groupColumn = e->Column;
// Set the groups to those created for the clicked column.
if (isRunningXPOrLater)
{
SetGroups(e->Column);
}
}
// Sets myListView to the groups created for the specified column.
private:
void SetGroups(int column)
{
// Remove the current groups.
myListView->Groups->Clear();
// Retrieve the hash table corresponding to the column.
Hashtable^ groups = dynamic_cast<Hashtable^>(groupTables[column]);
// Copy the groups for the column to an array.
array<ListViewGroup^>^ groupsArray = gcnew array<ListViewGroup^>(groups->Count);
groups->Values->CopyTo(groupsArray, 0);
// Sort the groups and add them to myListView.
Array::Sort(groupsArray, gcnew ListViewGroupSorter(myListView->Sorting));
myListView->Groups->AddRange(groupsArray);
// Iterate through the items in myListView, assigning each
// one to the appropriate group.
IEnumerator^ myEnum = myListView->Items->GetEnumerator();
while (myEnum->MoveNext())
{
ListViewItem^ item = safe_cast<ListViewItem^>(myEnum->Current);
// Retrieve the subitem text corresponding to the column.
String^ subItemText = item->SubItems[column]->Text;
// For the Title column, use only the first letter.
if (column == 0)
{
subItemText = subItemText->Substring(0, 1);
}
// Assign the item to the matching group.
item->Group = dynamic_cast<ListViewGroup^>(groups[subItemText]);
}
}
// Creates a Hashtable object with one entry for each unique
// subitem value (or initial letter for the parent item)
// in the specified column.
private:
Hashtable^ CreateGroupsTable(int column)
{
// Create a Hashtable object.
Hashtable^ groups = gcnew Hashtable();
// Iterate through the items in myListView.
IEnumerator^ myEnum1 = myListView->Items->GetEnumerator();
while (myEnum1->MoveNext())
{
ListViewItem^ item = safe_cast<ListViewItem^>(myEnum1->Current);
// Retrieve the text value for the column.
String^ subItemText = item->SubItems[column]->Text;
// Use the initial letter instead if it is the first column.
if (column == 0)
{
subItemText = subItemText->Substring(0, 1);
}
// If the groups table does not already contain a group
// for the subItemText value, add a new group using the
// subItemText value for the group header and Hashtable key.
if (!groups->Contains(subItemText))
{
groups->Add( subItemText, gcnew ListViewGroup(subItemText,
HorizontalAlignment::Left) );
}
}
// Return the Hashtable object.
return groups;
}
// Sorts ListViewGroup objects by header value.
ref class ListViewGroupSorter : public IComparer
{
private:
SortOrder order;
// Stores the sort order.
public:
ListViewGroupSorter(SortOrder theOrder)
{
order = theOrder;
}
// Compares the groups by header value, using the saved sort
// order to return the correct value.
virtual int Compare(Object^ x, Object^ y)
{
int result = String::Compare(
(dynamic_cast<ListViewGroup^>(x))->Header,
(dynamic_cast<ListViewGroup^>(y))->Header
);
if (order == SortOrder::Ascending)
{
return result;
}
else
{
return -result;
}
}
};
};
[STAThread]
int main()
{
Application::EnableVisualStyles();
Application::Run(gcnew ListViewGroupsExample());
}
using System;
using System.Collections;
using System.Windows.Forms;
public class ListViewGroupsExample : Form
{
private ListView myListView;
// Determine whether Windows XP or a later
// operating system is present.
private bool isRunningXPOrLater =
OSFeature.Feature.IsPresent(OSFeature.Themes);
// Declare a Hashtable array in which to store the groups.
private Hashtable[] groupTables;
// Declare a variable to store the current grouping column.
int groupColumn = 0;
public ListViewGroupsExample()
{
// Initialize myListView.
myListView = new ListView();
myListView.Dock = DockStyle.Fill;
myListView.View = View.Details;
myListView.Sorting = SortOrder.Ascending;
// Create and initialize column headers for myListView.
ColumnHeader columnHeader0 = new ColumnHeader();
columnHeader0.Text = "Title";
columnHeader0.Width = -1;
ColumnHeader columnHeader1 = new ColumnHeader();
columnHeader1.Text = "Author";
columnHeader1.Width = -1;
ColumnHeader columnHeader2 = new ColumnHeader();
columnHeader2.Text = "Year";
columnHeader2.Width = -1;
// Add the column headers to myListView.
myListView.Columns.AddRange(new ColumnHeader[]
{columnHeader0, columnHeader1, columnHeader2});
// Add a handler for the ColumnClick event.
myListView.ColumnClick +=
new ColumnClickEventHandler(myListView_ColumnClick);
// Create items and add them to myListView.
ListViewItem item0 = new ListViewItem( new string[]
{"Programming Windows",
"Petzold, Charles",
"1998"} );
ListViewItem item1 = new ListViewItem( new string[]
{"Code: The Hidden Language of Computer Hardware and Software",
"Petzold, Charles",
"2000"} );
ListViewItem item2 = new ListViewItem( new string[]
{"Programming Windows with C#",
"Petzold, Charles",
"2001"} );
ListViewItem item3 = new ListViewItem( new string[]
{"Coding Techniques for Microsoft Visual Basic .NET",
"Connell, John",
"2001"} );
ListViewItem item4 = new ListViewItem( new string[]
{"C# for Java Developers",
"Jones, Allen & Freeman, Adam",
"2002"} );
ListViewItem item5 = new ListViewItem( new string[]
{"Microsoft .NET XML Web Services Step by Step",
"Jones, Allen & Freeman, Adam",
"2002"} );
myListView.Items.AddRange(
new ListViewItem[] {item0, item1, item2, item3, item4, item5});
if (isRunningXPOrLater)
{
// Create the groupsTable array and populate it with one
// hash table for each column.
groupTables = new Hashtable[myListView.Columns.Count];
for (int column = 0; column < myListView.Columns.Count; column++)
{
// Create a hash table containing all the groups
// needed for a single column.
groupTables[column] = CreateGroupsTable(column);
}
// Start with the groups created for the Title column.
SetGroups(0);
}
// Initialize the form.
this.Controls.Add(myListView);
this.Size = new System.Drawing.Size(550, 330);
this.Text = "ListView Groups Example";
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new ListViewGroupsExample());
}
// Groups the items using the groups created for the clicked
// column.
private void myListView_ColumnClick(
object sender, ColumnClickEventArgs e)
{
// Set the sort order to ascending when changing
// column groups; otherwise, reverse the sort order.
if ( myListView.Sorting == SortOrder.Descending ||
( isRunningXPOrLater && (e.Column != groupColumn) ) )
{
myListView.Sorting = SortOrder.Ascending;
}
else
{
myListView.Sorting = SortOrder.Descending;
}
groupColumn = e.Column;
// Set the groups to those created for the clicked column.
if (isRunningXPOrLater)
{
SetGroups(e.Column);
}
}
// Sets myListView to the groups created for the specified column.
private void SetGroups(int column)
{
// Remove the current groups.
myListView.Groups.Clear();
// Retrieve the hash table corresponding to the column.
Hashtable groups = (Hashtable)groupTables[column];
// Copy the groups for the column to an array.
ListViewGroup[] groupsArray = new ListViewGroup[groups.Count];
groups.Values.CopyTo(groupsArray, 0);
// Sort the groups and add them to myListView.
Array.Sort(groupsArray, new ListViewGroupSorter(myListView.Sorting));
myListView.Groups.AddRange(groupsArray);
// Iterate through the items in myListView, assigning each
// one to the appropriate group.
foreach (ListViewItem item in myListView.Items)
{
// Retrieve the subitem text corresponding to the column.
string subItemText = item.SubItems[column].Text;
// For the Title column, use only the first letter.
if (column == 0)
{
subItemText = subItemText.Substring(0, 1);
}
// Assign the item to the matching group.
item.Group = (ListViewGroup)groups[subItemText];
}
}
// Creates a Hashtable object with one entry for each unique
// subitem value (or initial letter for the parent item)
// in the specified column.
private Hashtable CreateGroupsTable(int column)
{
// Create a Hashtable object.
Hashtable groups = new Hashtable();
// Iterate through the items in myListView.
foreach (ListViewItem item in myListView.Items)
{
// Retrieve the text value for the column.
string subItemText = item.SubItems[column].Text;
// Use the initial letter instead if it is the first column.
if (column == 0)
{
subItemText = subItemText.Substring(0, 1);
}
// If the groups table does not already contain a group
// for the subItemText value, add a new group using the
// subItemText value for the group header and Hashtable key.
if (!groups.Contains(subItemText))
{
groups.Add( subItemText, new ListViewGroup(subItemText,
HorizontalAlignment.Left) );
}
}
// Return the Hashtable object.
return groups;
}
// Sorts ListViewGroup objects by header value.
private class ListViewGroupSorter : IComparer
{
private SortOrder order;
// Stores the sort order.
public ListViewGroupSorter(SortOrder theOrder)
{
order = theOrder;
}
// Compares the groups by header value, using the saved sort
// order to return the correct value.
public int Compare(object x, object y)
{
int result = String.Compare(
((ListViewGroup)x).Header,
((ListViewGroup)y).Header
);
if (order == SortOrder.Ascending)
{
return result;
}
else
{
return -result;
}
}
}
}
Imports System.Collections
Imports System.Windows.Forms
Public Class ListViewGroupsExample
Inherits Form
Private myListView As ListView
' Determine whether Windows XP or a later
' operating system is present.
Private isRunningXPOrLater As Boolean = _
OSFeature.Feature.IsPresent(OSFeature.Themes)
' Declare a Hashtable array in which to store the groups.
Private groupTables() As Hashtable
' Declare a variable to store the current grouping column.
Private groupColumn As Integer = 0
Public Sub New()
' Initialize myListView.
myListView = New ListView()
myListView.Dock = DockStyle.Fill
myListView.View = View.Details
myListView.Sorting = SortOrder.Ascending
' Create and initialize column headers for myListView.
Dim columnHeader0 As New ColumnHeader()
columnHeader0.Text = "Title"
columnHeader0.Width = -1
Dim columnHeader1 As New ColumnHeader()
columnHeader1.Text = "Author"
columnHeader1.Width = -1
Dim columnHeader2 As New ColumnHeader()
columnHeader2.Text = "Year"
columnHeader2.Width = -1
' Add the column headers to myListView.
myListView.Columns.AddRange( New ColumnHeader() _
{columnHeader0, columnHeader1, columnHeader2} )
' Add a handler for the ColumnClick event.
AddHandler myListView.ColumnClick, AddressOf myListView_ColumnClick
' Create items and add them to myListView.
Dim item0 As New ListViewItem( New String() _
{"Programming Windows", _
"Petzold, Charles", _
"1998"} )
Dim item1 As New ListViewItem( New String() _
{"Code: The Hidden Language of Computer Hardware and Software", _
"Petzold, Charles", _
"2000"} )
Dim item2 As New ListViewItem( New String() _
{"Programming Windows with C#", _
"Petzold, Charles", _
"2001"} )
Dim item3 As New ListViewItem( New String() _
{"Coding Techniques for Microsoft Visual Basic .NET", _
"Connell, John", _
"2001"} )
Dim item4 As New ListViewItem( New String() _
{"C# for Java Developers", _
"Jones, Allen / Freeman, Adam", _
"2002"} )
Dim item5 As New ListViewItem( New String() _
{"Microsoft .NET XML Web Services Step by Step", _
"Jones, Allen / Freeman, Adam", _
"2002"} )
myListView.Items.AddRange( _
New ListViewItem() {item0, item1, item2, item3, item4, item5})
If isRunningXPOrLater
' Create the groupsTable array and populate it with one
' hash table for each column.
groupTables = New Hashtable(myListView.Columns.Count) {}
Dim column As Integer
For column = 0 To myListView.Columns.Count - 1
' Create a hash table containing all the groups
' needed for a single column.
groupTables(column) = CreateGroupsTable(column)
Next column
' Start with the groups created for the Title column.
SetGroups(0)
End If
' Initialize the form.
Me.Controls.Add(myListView)
Me.Size = New System.Drawing.Size(550, 330)
Me.Text = "ListView Groups Example"
End Sub
<STAThread()> _
Shared Sub Main()
Application.EnableVisualStyles()
Application.Run(New ListViewGroupsExample())
End Sub
' Groups the items using the groups created for the clicked
' column.
Private Sub myListView_ColumnClick( _
sender As Object, e As ColumnClickEventArgs)
' Set the sort order to ascending when changing
' column groups; otherwise, reverse the sort order.
If myListView.Sorting = SortOrder.Descending OrElse _
isRunningXPOrLater And e.Column <> groupColumn Then
myListView.Sorting = SortOrder.Ascending
Else
myListView.Sorting = SortOrder.Descending
End If
groupColumn = e.Column
' Set the groups to those created for the clicked column.
If isRunningXPOrLater Then
SetGroups(e.Column)
End If
End Sub
' Sets myListView to the groups created for the specified column.
Private Sub SetGroups(column As Integer)
' Remove the current groups.
myListView.Groups.Clear()
' Retrieve the hash table corresponding to the column.
Dim groups As Hashtable = CType(groupTables(column), Hashtable)
' Copy the groups for the column to an array.
Dim groupsArray(groups.Count - 1) As ListViewGroup
groups.Values.CopyTo(groupsArray, 0)
' Sort the groups and add them to myListView.
Array.Sort(groupsArray, New ListViewGroupSorter(myListView.Sorting))
myListView.Groups.AddRange(groupsArray)
' Iterate through the items in myListView, assigning each
' one to the appropriate group.
Dim item As ListViewItem
For Each item In myListView.Items
' Retrieve the subitem text corresponding to the column.
Dim subItemText As String = item.SubItems(column).Text
' For the Title column, use only the first letter.
If column = 0 Then
subItemText = subItemText.Substring(0, 1)
End If
' Assign the item to the matching group.
item.Group = CType(groups(subItemText), ListViewGroup)
Next item
End Sub
' Creates a Hashtable object with one entry for each unique
' subitem value (or initial letter for the parent item)
' in the specified column.
Private Function CreateGroupsTable(column As Integer) As Hashtable
' Create a Hashtable object.
Dim groups As New Hashtable()
' Iterate through the items in myListView.
Dim item As ListViewItem
For Each item In myListView.Items
' Retrieve the text value for the column.
Dim subItemText As String = item.SubItems(column).Text
' Use the initial letter instead if it is the first column.
If column = 0 Then
subItemText = subItemText.Substring(0, 1)
End If
' If the groups table does not already contain a group
' for the subItemText value, add a new group using the
' subItemText value for the group header and Hashtable key.
If Not groups.Contains(subItemText) Then
groups.Add( subItemText, New ListViewGroup(subItemText, _
HorizontalAlignment.Left) )
End If
Next item
' Return the Hashtable object.
Return groups
End Function 'CreateGroupsTable
' Sorts ListViewGroup objects by header value.
Private Class ListViewGroupSorter
Implements IComparer
Private order As SortOrder
' Stores the sort order.
Public Sub New(theOrder As SortOrder)
order = theOrder
End Sub
' Compares the groups by header value, using the saved sort
' order to return the correct value.
Public Function Compare(x As Object, y As Object) As Integer _
Implements IComparer.Compare
Dim result As Integer = String.Compare( _
CType(x, ListViewGroup).Header, _
CType(y, ListViewGroup).Header )
If order = SortOrder.Ascending Then
Return result
Else
Return -result
End If
End Function 'Compare
End Class
End Class
Megjegyzések
A ListView csoportosítási funkció lehetővé teszi a logikailag kapcsolódó ListView elemek vizuális csoportjainak létrehozását. Minden csoport egy szöveges fejlécből, majd egy vízszintes vonalból és a csoporthoz rendelt elemekből áll. A fejléc szövegét a vezérlőelem bal, jobb vagy középső sarkához igazíthatja. A vezérlőelemhez ListView rendelt csoportok akkor jelennek meg, ha a View tulajdonság értéke nem View.Lista .
ListView csoportok segítségével a felhasználók könnyebben megtalálhatják a keresett elemeket, ha hasznos kategóriákba osztják az elemeket. Bármilyen kategóriát létrehozhat. Az egyik tipikus módszer az elemek csoportosítása a lista rendezése alapján. Csoportosíthatja például az elemeket az elemnév kezdőbetűje szerint, ha a lista betűrendben vagy alelemek szerint van rendezve, például a lista rendezésének típusa vagy dátuma szerint, ha a részletek nézetben egy oszlopfejlécre kattint. Windows Explorer ezt a csoportosítási típust használja.
A csoportosítási funkció használatához adjon hozzá egy vagy több ListViewGroup objektumot egy GroupsListView vezérlőelem gyűjteményéhez. Állítsa be a csoportfejléc szövegét és az élőfej igazítását a ListViewGroup konstruktorban, vagy állítsa be őket a tulajdonságok és ListViewGroup.Header a ListViewGroup.HeaderAlignment tulajdonságok használatával.
A csoportosítási funkció ideiglenes letiltásához állítsa a tulajdonságot a ShowGroups következőre false: .
Egy elemet a csoporthoz úgy rendelhet hozzá, hogy megadja a csoportot a ListViewItem konstruktorban, beállítja a ListViewItem.Group tulajdonságot, vagy közvetlenül hozzáadja az elemet egy ListViewGroup.Items csoport gyűjteményéhez. A megjelenítés előtt minden elemet hozzá kell rendelni a csoportokhoz. A csoporthoz nem rendelt elemek az alapértelmezett csoportban jelennek meg, amelynek fejlécfelirata "DefaultGroup{0}". Az alapértelmezett csoport nem szerepel a Groups gyűjteményben, és nem módosítható. Elsősorban a hibakeresésben hasznos annak biztosítása, hogy az összes elem megfelelően lett hozzáadva a csoportokhoz.
Egy elem egyszerre csak egy csoportban lehet. A tulajdonság futásidőben történő beállításával ListViewItem.Group vagy egy másik csoport gyűjteményéhez való hozzáadásával ListViewGroup.Items módosíthatja azt a csoportot, amelyhez egy elem tartozik, amely automatikusan eltávolítja azt az előző csoportból.
A beszúrási jel funkció csoportok használata esetén le van tiltva. Ennek az az oka, hogy a csoportosítási funkció csoporttagság szerint rendezi az elemeket, míg a beszúrási jel funkció a húzással történő áthelyezéshez olyan ListView vezérlőelemben használatos, amely még nem rendelte meg az elemeket.
ListView csoportok csak Windows XP és 2003-Windows Server érhetők el, amikor az alkalmazás meghívja a Application.EnableVisualStyles metódust. A korábbi operációs rendszereken a csoportokra vonatkozó kódoknak nincs hatása, és a csoportok nem jelennek meg. Ennek eredményeképpen előfordulhat, hogy a csoportosítási funkciótól függő kódok nem működnek megfelelően.
Érdemes lehet olyan kódot is tartalmaznia, amely meghatározza, hogy a csoportosítási funkció elérhető-e, és alternatív funkciókat biztosít, ha az nem érhető el. Előfordulhat például, hogy alternatív rendezést szeretne biztosítani, ha olyan operációs rendszereken fut, amelyek nem támogatják a csoportok szerinti rendezést.
A csoportosítási funkciót ugyanaz a kódtár biztosítja, amely az operációs rendszer témáinak funkcióját biztosítja. A kódtár rendelkezésre állásának ellenőrzéséhez hívja meg a metódus túlterhelését FeatureSupport.IsPresent(Object) , és adja meg az OSFeature.Themes értéket.