diff --git a/docs/archive/windows/backgroundtaskhelper.md b/docs/archive/windows/backgroundtaskhelper.md
new file mode 100644
index 00000000..4aeeb603
--- /dev/null
+++ b/docs/archive/windows/backgroundtaskhelper.md
@@ -0,0 +1,206 @@
+---
+title: Background Task Helper
+author: nmetulev
+description: The Background Task Helper helps users interact with background tasks in an easier manner.
+keywords: windows 10, uwp, windows community toolkit, uwp community toolkit, uwp toolkit, Background Task Helper
+dev_langs:
+ - csharp
+ - vb
+---
+
+# Background Task Helper (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+While there are no immediate plans to port this component to 8.x, the community is welcome to express interest or contribute to its inclusion.
+
+For more information:
+- [Community Toolkit GitHub repository](https://github.com/CommunityToolkit/Windows)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+The [Background Task Helper](/dotnet/api/microsoft.toolkit.uwp.helpers.backgroundtaskhelper) helps users interact with background tasks in an easier manner.
+
+> [!div class="nextstepaction"]
+> [Try it in the sample app](uwpct://Helpers?sample=BackgroundTaskHelper)
+
+## Syntax
+
+```csharp
+using Microsoft.Toolkit.Uwp;
+
+BackgroundTaskRegistration registered = BackgroundTaskHelper.Register(typeof(BackgroundTaskClass), new TimeTrigger(15, true));
+BackgroundTaskRegistration registered = BackgroundTaskHelper.Register("TaskName", "TaskEntryPoint", new TimeTrigger(15, true));
+```
+
+```vb
+Imports Microsoft.Toolkit.Uwp
+
+Dim registered As BackgroundTaskRegistration = BackgroundTaskHelper.Register(GetType(BackgroundTaskClass), New TimeTrigger(15, True))
+Dim registered As BackgroundTaskRegistration = BackgroundTaskHelper.Register("TaskName", "TaskEntryPoint", New TimeTrigger(15, True))
+```
+
+## Methods
+
+| Methods | Return Type | Description |
+| -- | -- | -- |
+| GetBackgroundTask(String) | [IBackgroundTaskRegistration](/uwp/api/Windows.ApplicationModel.Background.IBackgroundTaskRegistration) | Get the registered background task of the given type |
+| GetBackgroundTask(Type) | IBackgroundTaskRegistration | Get the registered background task of the given type |
+| IsBackgroundTaskRegistered(String) | bool | Check if a background task is registered |
+| IsBackgroundTaskRegistered(Type) | bool | Check if a background task is registered |
+| Register(String, IBackgroundTrigger, Boolean, Boolean, IBackgroundCondition[]) | [BackgroundTaskRegistration](/uwp/api/Windows.ApplicationModel.Background.BackgroundTaskRegistration) | Registers under the Single Process Model |
+| Register(Type, IBackgroundTrigger, Boolean, Boolean, IBackgroundCondition[]) | BackgroundTaskRegistration | Register a background task with conditions |
+| Register(String, String, IBackgroundTrigger, Boolean, Boolean, IBackgroundCondition[]) | BackgroundTaskRegistration | Register a background task with conditions |
+| Unregister(String, Boolean) | void | Unregister a background task |
+| Unregister(Type, Boolean) | void | Unregister a background task |
+| Unregister(IBackgroundTaskRegistration, Boolean) | void | Unregister a background task |
+
+## Example
+
+### Using Multi-Process Model
+
+Using MPM (Multi-Process Model) is the classic way of using Background Task.
+
+To make it work, you will need :
+
+* To create Background Tasks in a Windows Runtime Component
+* To register the Background Tasks in the package manifest (appxmanifest file)
+
+Once it is done, you can register your Background Tasks.
+
+```csharp
+// Be sure to include the using at the top of the file:
+using Microsoft.Toolkit.Uwp;
+using Windows.ApplicationModel.Background;
+
+// Register a normal, separate process, background task
+BackgroundTaskRegistration registered = BackgroundTaskHelper.Register("TaskName", "TaskEntryPoint", new TimeTrigger(15, true));
+
+// This can also be written using the overload of Register with Type parameter.
+BackgroundTaskRegistration registered = BackgroundTaskHelper.Register(typeof(BackgroundTaskClass), new TimeTrigger(15, true));
+
+// With condition
+BackgroundTaskRegistration registered =
+ BackgroundTaskHelper.Register(typeof(BackgroundTaskClass),
+ new TimeTrigger(15, true),
+ false, true,
+ new SystemCondition(SystemConditionType.InternetAvailable));
+
+// 2 or more conditions
+BackgroundTaskRegistration registered =
+ BackgroundTaskHelper.Register(typeof(BackgroundTaskClass),
+ new TimeTrigger(15, true),
+ false, true,
+ new SystemCondition(SystemConditionType.InternetAvailable),
+ new SystemCondition(SystemConditionType.UserPresent));
+```
+
+```vb
+' Be sure to include the Imports at the top of the file:
+Imports Microsoft.Toolkit.Uwp
+Imports Windows.ApplicationModel.Background
+
+' Register a normal, separate process, background task
+Dim registered As BackgroundTaskRegistration = BackgroundTaskHelper.Register("TaskName", "TaskEntryPoint", New TimeTrigger(15, True))
+
+' This can also be written using the overload of Register with Type parameter.
+Dim registered As BackgroundTaskRegistration = BackgroundTaskHelper.Register(GetType(BackgroundTaskClass), New TimeTrigger(15, True))
+
+' With condition
+Dim registered As BackgroundTaskRegistration = BackgroundTaskHelper.Register(GetType(BackgroundTaskClass),
+ New TimeTrigger(15, True),
+ False,
+ True,
+ New SystemCondition(SystemConditionType.InternetAvailable))
+
+' 2 or more conditions
+Dim registered As BackgroundTaskRegistration = BackgroundTaskHelper.Register(GetType(BackgroundTaskClass),
+ New TimeTrigger(15, True),
+ False,
+ True,
+ New SystemCondition(SystemConditionType.InternetAvailable),
+ New SystemCondition(SystemConditionType.UserPresent))
+```
+
+### Using Single-Process Model
+
+Using SPM (Single-Process Model) is the new and simple way of using Background Task.
+It is required to target Anniversary Update (SDK 14393) or later.
+
+Using SPM, you can declare your Background Tasks inside your own project, no need to create a Windows Runtime Component.
+Moreover, it is no longer required to register the Background Tasks in the package manifest (appxmanifest file).
+
+Once you have created the Background Task, you can register it by calling the `Register` method.
+
+```csharp
+// Be sure to include the using at the top of the file:
+using Microsoft.Toolkit.Uwp;
+using Windows.ApplicationModel.Background;
+
+// Register a single process background task (Anniversary Update and later ONLY)
+BackgroundTaskRegistration registered = BackgroundTaskHelper.Register("Name of the Background Task", new TimeTrigger(15, true));
+```
+
+```vb
+' Be sure to include the imports at the top of the file:
+Imports Microsoft.Toolkit.Uwp
+Imports Windows.ApplicationModel.Background
+
+' Register a single process background task (Anniversary Update and later ONLY)
+Dim registered As BackgroundTaskRegistration = BackgroundTaskHelper.Register("Name of the Background Task", New TimeTrigger(15, True))
+```
+
+The other difference between SPM and MPM is that in SPM, you have to handle your Background Tasks inside the `OnBackgroundActivated` event of `App.xaml.cs` class.
+Here is an example of how to handle Background Tasks in SPM.
+
+```csharp
+// Event fired when a Background Task is activated (in Single Process Model)
+protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
+{
+ base.OnBackgroundActivated(args);
+
+ var deferral = args.TaskInstance.GetDeferral();
+
+ switch (args.TaskInstance.Task.Name)
+ {
+ case "Name of the Background Task":
+ new TestBackgroundTask().Run(args.TaskInstance);
+ break;
+ }
+
+ deferral.Complete();
+}
+```
+
+```vb
+Protected Overrides Sub OnBackgroundActivated(ByVal args As BackgroundActivatedEventArgs)
+ MyBase.OnBackgroundActivated(args)
+
+ Dim deferral = args.TaskInstance.GetDeferral()
+
+ Select Case args.TaskInstance.Task.Name
+ Case "Name of the Background Task"
+ New TestBackgroundTask().Run(args.TaskInstance)
+ End Select
+
+ deferral.Complete()
+End Sub
+```
+
+## Sample Project
+
+[Background Task Helper](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/BackgroundTaskHelper). You can [see this in action](uwpct://Helpers?sample=BackgroundTaskHelper) in the [Windows Community Toolkit Sample App](https://aka.ms/windowstoolkitapp).
+
+## Requirements
+
+| Device family | Universal, 10.0.16299.0 or higher |
+| --- | --- |
+| Namespace | Microsoft.Toolkit.Uwp |
+| NuGet package | [Microsoft.Toolkit.Uwp](https://www.nuget.org/packages/Microsoft.Toolkit.Uwp/) |
+
+## API
+
+* [Background Task source code](https://github.com/windows-toolkit/WindowsCommunityToolkit/blob/rel/7.1.0/Microsoft.Toolkit.Uwp/Helpers/BackgroundTaskHelper.cs)
diff --git a/docs/archive/windows/bindablevalueholder.md b/docs/archive/windows/bindablevalueholder.md
new file mode 100644
index 00000000..b3d143c2
--- /dev/null
+++ b/docs/archive/windows/bindablevalueholder.md
@@ -0,0 +1,76 @@
+---
+title: BindableValueHolder
+author: nmetulev
+description: The BindableValueHolder lets users change several objects' states at a time.
+keywords: windows 10, uwp, windows community toolkit, uwp community toolkit, uwp toolkit, BindableValueHolder
+---
+
+# BindableValueHolder (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+While there are no immediate plans to port this component to 8.x, the community is welcome to express interest or contribute to its inclusion.
+
+For more information:
+- [Community Toolkit GitHub repository](https://github.com/CommunityToolkit/Windows)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+- [GitHub issue #491](https://github.com/CommunityToolkit/Windows/issues/491) (Documentation mapping and porting)
+
+Original documentation follows below.
+
+---
+
+The [BindableValueHolder](/dotnet/api/microsoft.toolkit.uwp.ui.helpers.bindablevalueholder) lets users change several objects' states at a time.
+
+## Syntax
+
+```xaml
+
+```
+
+## Properties
+
+| Property | Type | Description |
+| -- | -- | -- |
+| Value | object | Gets or sets the held value |
+
+## Example
+
+You can use it to switch several object states by declaring it as a Resource (either in a page or control):
+
+```xaml
+
+```
+
+and using it like that:
+
+```xaml
+
+
+
+```
+
+and switching it like that:
+
+```xaml
+
+
+
+
+
+
+
+
+
+```
+
+## Requirements
+
+| Device family | Universal, 10.0.16299.0 or higher |
+| --- | --- |
+| Namespace | Microsoft.Toolkit.Uwp.UI |
+| NuGet package | [Microsoft.Toolkit.Uwp.UI](https://www.nuget.org/packages/Microsoft.Toolkit.Uwp.UI/) |
+
+## API
+
+* [BindableValueHolder source code](https://github.com/windows-toolkit/WindowsCommunityToolkit/blob/rel/7.1.0/Microsoft.Toolkit.Uwp.UI/Helpers/BindableValueHolder.cs)
diff --git a/docs/archive/windows/bladeview.md b/docs/archive/windows/bladeview.md
new file mode 100644
index 00000000..c48a7d3a
--- /dev/null
+++ b/docs/archive/windows/bladeview.md
@@ -0,0 +1,125 @@
+---
+title: BladeView
+author: nmetulev
+description: The BladeView provides a container to host blades as extra detail pages in, for example, a master-detail scenario.
+keywords: windows 10, uwp, windows community toolkit, uwp community toolkit, uwp toolkit, BladeView, XAML Control, xaml
+dev_langs:
+ - csharp
+ - vb
+---
+
+# BladeView (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+While there are no immediate plans to port this component to 8.x, the community is welcome to express interest or contribute to its inclusion.
+
+For more information:
+- [GitHub tracking issue for BladeView port](https://github.com/CommunityToolkit/Windows/issues/89)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+The [BladeView](/dotnet/api/microsoft.toolkit.uwp.ui.controls.bladeview) control provides a horizontal collection of [BladeItems](/dotnet/api/microsoft.toolkit.uwp.ui.controls.bladeitem) for drilling into detailed scenarios. The control is based on how the Azure Portal works.
+
+> [!div class="nextstepaction"]
+> [Try it in the sample app](uwpct://Controls?sample=BladeView)
+
+## Syntax
+
+```xaml
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Sample Output
+
+
+
+## Properties
+
+### BladeView Properties
+
+| Property | Type | Description |
+|----------------------------|-------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------|
+| ActiveBlades | IList<[BladeItem](/dotnet/api/microsoft.toolkit.uwp.ui.controls.bladeitem)> | Description |
+| AutoCollapseCountThreshold | int | Gets or sets a value indicating what the overflow amount should be to start auto collapsing blade items |
+| BladeMode | [BladeMode](/dotnet/api/microsoft.toolkit.uwp.ui.controls.blademode) | Gets or sets a value indicating whether blade mode (ex: whether blades are full screen or not) |
+
+### BladeItem Properties
+
+| Property | Type | Description |
+| -- | -- | -- |
+| CloseButtonBackground | Brush | Gets or sets the background color of the default close button in the title bar |
+| CloseButtonForeground | Brush | Gets or sets the foreground color of the close button |
+| IsOpen | bool | Gets or sets a value indicating whether this blade is opened |
+| Header | string | Gets or sets the content for the header |
+| TitleBarBackground | Brush | Gets or sets the background color of the title bar |
+| TitleBarVisibility | Visibility | Gets or sets the visibility of the title bar for this blade |
+
+## Events
+
+### BladeView Events
+
+| Events | Description |
+| -- | -- |
+| BladeClosed | Fires whenever a BladeItem is closed |
+| BladeOpened | Fires whenever a BladeItem is opened |
+
+### BladeItem Events
+
+| Events | Description |
+| -- | -- |
+| VisibilityChanged | Fires when the blade is opened or closed |
+
+## Examples
+
+- If you want to use the BladeView for handling a flow of actions, you can use the `AutoCollapseCountThreshold` property to tell it to start auto collapsing BladeItems after a certain threshold count has been reached. This will also help keep a clean, uncluttered screen real estate.
+
+ For example: if you set `AutoCollapseCountThreshold` to 3, the BladeView will start counting all BladeItems that are open in the BladeView and have their `TitleBarVisibility` property set to Visible. When the n+1 BladeItem, in our case the 4th one, is being added, the BladeView will auto collapse all n BladeItems except for the last one. All additional BladeItems that are added afterwards will trigger the same effect; collapse all BladeItems except for the last open one.
+
+ *Sample Code*
+
+ ```xaml
+
+
+
+
+
+
+
+ .....
+ .....
+
+ ```
+
+## Sample Project
+
+[BladeView Sample Page Source](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/BladeView). You can [see this in action](uwpct://Controls?sample=BladeView) in the [Windows Community Toolkit Sample App](https://aka.ms/windowstoolkitapp).
+
+## Default Template
+
+[BladeView XAML File](https://github.com/CommunityToolkit/WindowsCommunityToolkit/blob/rel/7.1.0/Microsoft.Toolkit.Uwp.UI.Controls.Layout/BladeView/BladeView.xaml) is the XAML template used in the toolkit for the default styling.
+
+## Requirements
+
+| Device family | Universal, 10.0.16299.0 or higher |
+| -- | -- |
+| Namespace | Microsoft.Toolkit.Uwp.UI.Controls |
+| NuGet package | [Microsoft.Toolkit.Uwp.UI.Controls](https://www.nuget.org/packages/Microsoft.Toolkit.Uwp.UI.Controls/) |
+
+## API
+
+- [BladeView source code](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.UI.Controls.Layout/BladeView)
diff --git a/docs/archive/windows/bluetoothlehelper.md b/docs/archive/windows/bluetoothlehelper.md
new file mode 100644
index 00000000..376f5754
--- /dev/null
+++ b/docs/archive/windows/bluetoothlehelper.md
@@ -0,0 +1,182 @@
+---
+title: BluetoothLEHelper
+author: nmetulev
+description: The BluetoothLEHelper class provides functionality to easily enumerate, connect to and interact with Bluetooth LE Peripherals.
+keywords: windows 10, uwp, windows community toolkit, uwp community toolkit, uwp toolkit, BluetoothLEHelper, bluetooth le, bluetooth
+dev_langs:
+ - csharp
+ - vb
+---
+
+# BluetoothLEHelper (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+While there are no immediate plans to port this component to 8.x, the community is welcome to express interest or contribute to its inclusion.
+
+For more information:
+- [Community Toolkit GitHub repository](https://github.com/CommunityToolkit/Windows)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+The BluetoothLEHelper class provides functionality to easily enumerate, connect to and interact with Bluetooth LE Peripherals.
+
+> [!div class="nextstepaction"]
+> [Try it in the sample app](uwpct://Helpers?sample=BluetoothLEHelper)
+
+## BluetoothLEHelper class
+
+### Properties
+
+| Property | Type | Description |
+|---------------------------|---------------------------------------------------|-----------------------------------------------------------------------------|
+| BluetoothLeDevices | ObservableCollection\ | Gets the list of available bluetooth devices |
+| IsEnumerating | bool | Gets a value indicating whether app is currently enumerating |
+| IsPeripheralRoleSupported | bool | Gets a value indicating whether peripheral mode is supported by this device |
+| IsCentralRoleSupported | bool | Gets a value indicating whether central role is supported by this device |
+
+### Methods
+
+| Methods | Return Type | Description |
+| -- | -- | -- |
+| StartEnumeration() | void | Starts enumeration of bluetooth le devices |
+| StopEnumeration() | void | Stops enumeration of bluetooth device |
+
+### Events
+
+| Events | Description |
+| -- | -- |
+| EnumerationCompleted | An event for when the enumeration is complete |
+
+## ObservableBluetoothLEDevice class
+
+### Properties
+
+| Property | Type | Description |
+|--------------------------|-------------------------------------------------------------------------------------------------------|-------------------------------------------------------------|
+| BluetoothAddressAsString | string | Gets the bluetooth address of this device as a string |
+| BluetoothAddressAsUlong | ulong | Gets the bluetooth address of this device |
+| BluetoothLEDevice | BluetoothLEDevice | Gets the base bluetooth device this class wraps |
+| DeviceInfo | [DeviceInformation](/uwp/api/Windows.Devices.Enumeration.DeviceInformation) | Gets the device information for the device this class wraps |
+| ErrorText | string | Gets the error text when connecting to this device fails |
+| Glyph | BitmapImage | Gets or sets the glyph of this bluetooth device |
+| IsConnected | bool | Gets a value indicating whether this device is connected |
+| IsPaired | bool | Gets a value indicating whether this device is paired |
+| Name | string | Gets the name of this device |
+| RSSI | int | Gets the RSSI value of this device |
+| Services | ObservableCollection\ | Gets the services this device supports |
+| ServiceCount | int | Gets or sets the number of services this device has |
+
+### Methods
+
+| Methods | Return Type | Description |
+| -- | -- | -- |
+| ConnectAsync() | Task | ConnectAsync to this bluetooth device |
+| DoInAppPairingAsync() | Task | Does the in application pairing |
+| UpdateAsync(DeviceInformationUpdate) | Task | Updates this device's deviceInformation |
+| ToString() | string | Overrides the ToString function to return the name of the device |
+
+## ObservableGattDeviceService
+
+### Properties
+
+| Property | Type | Description |
+|-----------------|-----------------------------------------------------|----------------------------------------------|
+| Characteristics | ObservableCollection\ | Gets all the characteristics of this service |
+| Name | string | Gets the name of this service |
+| UUID | string | Gets the UUID of this service |
+| Service | GattDeviceService | Gets the service this class wraps |
+
+## ObservableGattCharacteristics
+
+### Properties
+
+| Property | Type | Description |
+| -- | -- | -- |
+| Characteristic | GattCharacteristic | Gets or sets the characteristic this class wraps |
+| IsIndicateSet | bool | Gets a value indicating whether indicate is set |
+| IsNotifySet | bool | Gets a value indicating whether notify is set |
+| Parent | ObservableGattDeviceService | Gets or sets the parent service of this characteristic |
+| Name | string | Gets or sets the name of this characteristic |
+| UUID | string | Gets or sets the UUID of this characteristic |
+| Value | string | Gets the value of this characteristic |
+| DisplayType | DisplayTypes | Gets or sets how this characteristic's value should be displayed |
+
+### Methods
+
+| Methods | Return Type | Description |
+|---------------------|--------------|---------------------------------------|
+| ReadValueAsync() | Task\ | Reads the value of the Characteristic |
+| SetIndicateAsync() | Task\ | Set's the indicate descriptor |
+| StopIndicateAsync() | Task\ | Unset the indicate descriptor |
+| SetNotifyAsync() | Task\ | Sets the notify characteristic |
+| StopNotifyAsync() | Task\ | Unsets the notify descriptor |
+
+## Example
+
+```csharp
+// Get a local copy of the context for easier reading
+BluetoothLEHelper bluetoothLEHelper = BluetoothLEHelper.Context;
+
+// check if BluetoothLE APIs are available
+if (BluetoothLEHelper.IsBluetoothLESupported)
+{
+ // Start the Enumeration
+ bluetoothLEHelper.StartEnumeration();
+
+ // At this point the user needs to select a device they want to connect to. This can be done by
+ // creating a ListView and binding the bluetoothLEHelper collection to it. Once a device is found,
+ // the Connect() method can be called to connect to the device and start interacting with its services
+
+ // Connect to a device if your choice
+ ObservableBluetoothLEDevice device = bluetoothLEHelper.BluetoothLeDevices[];
+ await device.ConnectAsync();
+
+ // At this point the device is connected and the Services property is populated.
+
+ // See all the services
+ var services = device.Services;
+}
+```
+
+```vb
+' Get a local copy of the context for easier reading
+Dim bluetoothLEHelper As BluetoothLEHelper = BluetoothLEHelper.Context
+
+' check if BluetoothLE APIs are available
+If BluetoothLEHelper.IsBluetoothLESupported Then
+ ' Start the Enumeration
+ bluetoothLEHelper.StartEnumeration()
+
+ ' At this point the user needs to select a device they want to connect to. This can be done by
+ ' creating a ListView and binding the bluetoothLEHelper collection to it. Once a device is found,
+ ' the Connect() method can be called to connect to the device and start interacting with its services
+
+ ' Connect to a device if your choice
+ Dim device As ObservableBluetoothLEDevice = bluetoothLEHelper.BluetoothLeDevices()
+ Await device.ConnectAsync()
+
+ ' At this point the device is connected and the Services property is populated.
+
+ ' See all the services
+ Dim services = device.Services
+End If
+```
+
+## Sample Project
+
+[BluetoothLE Helper Sample Page Source](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/BluetoothLEHelper). You can [see this in action](uwpct://Helpers?sample=BluetoothLEHelper) in the [Windows Community Toolkit Sample App](https://aka.ms/windowstoolkitapp).
+
+## Requirements
+
+| Device family | Universal, 10.0.16299.0 or higher |
+| --- | --- |
+| Namespace | Microsoft.Toolkit.Uwp.Connectivity |
+| NuGet package | [Microsoft.Toolkit.Uwp](https://www.nuget.org/packages/Microsoft.Toolkit.Uwp/) |
+
+## API
+
+* [BluetoothLEHelper source code](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.Connectivity/BluetoothLEHelper)
diff --git a/docs/archive/windows/canvaspathgeometry.md b/docs/archive/windows/canvaspathgeometry.md
new file mode 100644
index 00000000..2529afd1
--- /dev/null
+++ b/docs/archive/windows/canvaspathgeometry.md
@@ -0,0 +1,226 @@
+---
+title: CanvasPathGeometry Drawing
+author: ratishphilip
+description: The CanvasPathGeometry class facilitates the drawing and manipulation of complex geometrical shapes.
+keywords: windows 10, uwp, windows community toolkit, uwp community toolkit, uwp toolkit, Win2D, Win2D path mini language
+dev_langs:
+ - csharp
+---
+
+# CanvasPathGeometry (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+While there are no immediate plans to port this component to 8.x, the community is welcome to express interest or contribute to its inclusion.
+
+For more information:
+- [Community Toolkit GitHub repository](https://github.com/CommunityToolkit/Windows)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+The `CanvasGeometry` class (in the `Microsoft.Graphics.Canvas.Geometry` namespace) facilitates the drawing and manipulation of complex geometrical shapes. These shapes can be outlined with a stroke and filled with a brush (which can be a solid color, a bitmap pattern, or a gradient).
+
+While the `CanvasGeometry` class provides various static methods to create predefined shapes like Circle, Ellipse, Rectangle, RoundedRectangle, the `CanvasPathBuilder` class provides several methods to create freeform CanvasGeometry objects.
+Creation of a complex freeform geometric shape may involve invoking of several CanvasPathBuilder commands. For example, the following code shows how to create a triangle geometry using CanvasPathBuilder
+
+```cs
+CanvasPathBuilder pathBuilder = new CanvasPathBuilder(device);
+pathBuilder.BeginFigure(1, 1);
+pathBuilder.AddLine(300, 300);
+pathBuilder.AddLine(1, 300);
+pathBuilder.EndFigure(CanvasFigureLoop.Closed);
+CanvasGeometry triangleGeometry = CanvasGeometry.CreatePath(pathBuilder);
+```
+
+The [`CanvasPathGeometry`](/dotnet/api/microsoft.toolkit.uwp.ui.media.geometry.canvaspathgeometry) class provides several static methods that parse the [Win2D Mini Language](win2d-path-mini-language.md) and instantiate the complex geometries, color, brushes, strokes, and stroke styles. This class is available in the `Microsoft.Toolkit.Uwp.UI.Media.Geometry` namespace.
+
+> [!div class="nextstepaction"]
+> [try it in the sample app](uwpct://Helpers?sample=CanvasPathGeometryPage)
+
+## Examples
+
+### Creating CanvasGeometry with CanvasPathGeometry
+
+The following APIs convert path data string to CanvasGeometry
+
+```cs
+public static CanvasGeometry CreateGeometry(ICanvasResourceCreator resourceCreator, string pathData, StringBuilder logger = null);
+public static CanvasGeometry CreateGeometry(string pathData, StringBuilder logger = null);
+```
+
+The **logger** parameter in this method is an option argument of type **StringBuilder** that can be used to obtain the **CanvasPathBuilder** commands in text format. It is mainly intended for information/debugging purposes only.
+
+### Creating Color
+
+#### From Hexadecimal Color String or High Dynamic Range Color String
+
+There are two APIs that convert the hexadecimal color string in **#RRGGBB** or **#AARRGGBB** format or the High Dynamic Range Color string in the **R G B A** format to the corresponding Color object. The '#' character is optional in Hexadecimal color string. R, G, B & A should have value in the range between 0 and 1, inclusive.
+
+```cs
+public static Color CreateColor(string colorString);
+public static bool TryCreateColor(string colorString , out Color color);
+```
+
+The first API will raise an **ArgumentException** if the argument is not in the correct format while the second API will attempt to convert the color string without raising an exception.
+
+Example
+
+```cs
+var redColor = CanvasPathGeometry.CreateColor("#ff0000");
+CanvasPathGeometry.TryCreateColor("0000ff", out Color blueColor);
+
+try
+{
+ // throws ArgumentException
+ var invalidColor = CanvasPathGeometry.CreateColor("xyz");
+}
+catch (ArgumentException)
+{
+
+}
+```
+
+#### From High Dynamic Range Color (Vector4)
+
+The following API Converts a **Vector4** High Dynamic Range Color to Color object. Negative components of the Vector4 will be sanitized by taking the absolute value of the component. The HDR Color components should have value in the range [0, 1]. If their value is more than 1, they will be clamped at 1. **Vector4** 's X, Y, Z, W components match to **Color**'s R, G, B, A components respectively.
+
+```cs
+public static Color CreateColor(Vector4 hdrColor);
+```
+
+Example
+
+```cs
+var hdrVector = new Vector4(1, 0, 0, 1);
+// Red color
+var redColor = CanvasPathGeometry.CreateColor(hdfVector);
+```
+
+### Creating ICanvasBrush
+
+The following API converts a brush data string to **ICanvasBrush** object
+
+```cs
+public static ICanvasBrush CreateBrush(ICanvasResourceCreator resourceCreator,
+string brushData);
+```
+
+Example
+
+```cs
+// SolidColorBrush with 0.75 opacity
+var solidRedBrush = CanvasPathGeometry.CreateBrush(device, "SC #FFFF0000 O 0.75");
+// LinearGradientBrush
+var linearGradientBrush = CanvasPathGeometry.CreateBrush(device, “LG M 0 80 Z0 0 S 0.00 #ffee5124, 0.18 #fff05627, 0.26 #fff15b29, 0.6 #fff58535, 1.00 #fff9af41”);
+```
+
+### Creating CanvasStrokeStyle
+
+The following API converts a style data string to **CanvasStrokeStyle** object
+
+```cs
+public static CanvasStrokeStyle CreateStrokeStyle(string styleData);
+```
+
+Example
+
+```cs
+// CanvasStrokeStyle with custom dash style
+var customStrokeStyle = CanvasPathGeometry.CreateStrokeStyle(“CSS CDS 2 2 0 2 1 3”);
+```
+
+### Creating ICanvasStroke
+
+**ICanvasStroke** is an interface to represent the Stroke which can be used to render an outline on a **CanvasGeometry**. **CanvasStroke** class implements this interface.
+
+```cs
+public interface ICanvasStroke
+{
+ ICanvasBrush Brush { get; }
+ float Width { get; }
+ CanvasStrokeStyle Style { get; }
+ Matrix3x2 Transform { get; set; }
+}
+
+public sealed class CanvasStroke : ICanvasStroke
+{
+ public ICanvasBrush Brush { get; }
+ public float Width { get; }
+ public CanvasStrokeStyle Style { get; }
+ public Matrix3x2 Transform { get; set; }
+
+ public CanvasStroke(ICanvasBrush brush, float strokeWidth = 1f);
+ public CanvasStroke(ICanvasBrush brush, float strokeWidth, CanvasStrokeStyle strokeStyle);
+ public CanvasStroke(ICanvasResourceCreator device, Color strokeColor, float strokeWidth = 1f);
+ public CanvasStroke(ICanvasResourceCreator device, Color strokeColor, float strokeWidth, CanvasStrokeStyle strokeStyle);
+}
+```
+
+The following API converts a stroke data string to **ICanvasStroke** object
+
+```cs
+public static ICanvasStroke CreateStroke(ICanvasResourceCreator resourceCreator, string strokeData);
+```
+
+Example
+
+```cs
+// A dashed stroke rendered with a LinearGradientBrush and a custom stroke style
+var dashedStroke = CanvasPathGeometry.CreateStroke(device, “ST 4.5 LG M 0 0 Z80 80 S 0.00 #ffff0000, 0.5 #ff00ff00, 0.99 #ff0000ff CSS DS 2 Do 2 SC 1 EC 2 CDS 2 2 0 2 1 3”);
+// A solid line stroke of thickness 2 having red color
+var solidStroke = CanvasPathGeometry.CreateStroke(device, “ST 2 SC #ff0000”);
+```
+
+### Compositor Extension Methods
+
+Based on the above methods, the following extension methods for **Compositor** are now available
+
+```cs
+public static CompositionPath CreatePath(this Compositor compositor, string pathData);
+public static CompositionPathGeometry CreatePathGeometry(this Compositor compositor, string pathData);
+public static CompositionSpriteShape CreateSpriteShape(this Compositor compositor, string pathData);
+public static CompositionGeometricClip CreateGeometricClip(this Compositor compositor, CanvasGeometry geometry);
+public static CompositionGeometricClip CreateGeometricClip(this Compositor compositor, string pathData);
+```
+
+### Creating a Squircle
+
+A [Squircle](https://en.wikipedia.org/wiki/Squircle) is an intermediate shape between a square and a circle.
+
+
+
+The following extension methods help to create a Squircle in Composition layer or using Win2D.
+
+```cs
+// CanvasPathGeometry
+public static CanvasGeometry CreateSquircle(ICanvasResourceCreator resourceCreator, float x, float y, float width, float height, float radiusX, float radiusY);
+// CanvasPathBuilder extension method
+public static void AddSquircleFigure(this CanvasPathBuilder pathBuilder, float x, float y, float width, float height, float radiusX, float radiusY);
+// CanvasDrawingsession extension methods
+public static void DrawSquircle(this CanvasDrawingSession session, float x, float y, float w, float h, float radiusX, float radiusY, ICanvasStroke stroke);
+public static void DrawSquircle(this CanvasDrawingSession session, float x, float y, float w, float h, float radiusX, float radiusY, Vector2 offset, ICanvasStroke stroke);
+public static void FillSquircle(this CanvasDrawingSession session, float x, float y, float w, float h, float radiusX, float radiusY, Color color);
+public static void FillSquircle(this CanvasDrawingSession session, float x, float y, float w, float h, float radiusX, float radiusY, ICanvasBrush brush);
+public static void FillSquircle(this CanvasDrawingSession session, float x, float y, float w, float h, float radiusX, float radiusY, Vector2 offset, Color color);
+public static void FillSquircle(this CanvasDrawingSession session, float x, float y, float w, float h, float radiusX, float radiusY, Vector2 offset, ICanvasBrush brush);
+```
+
+## Sample Project
+
+
+
+[CanvasPathGeometry Sample Page Source](https://github.com/windows-toolkit/WindowsCommunityToolkit/blob/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/CanvasPathGeometry/CanvasPathGeometryPage.xaml.cs). You can [see this in action](uwpct://Helpers?sample=CanvasPathGeometryPage) in [Windows Community Toolkit Sample App](https://aka.ms/windowstoolkitapp).
+
+## Requirements
+
+| Device family | Universal, MinVersion or higher |
+| ------------- | ------------------------------------------------------------------------------------------------ |
+| Namespace | Microsoft.Toolkit.Uwp.UI.Media.Geometry |
+| NuGet package | [Microsoft.Toolkit.Uwp.UI.Media](https://www.nuget.org/packages/Microsoft.Toolkit.Uwp.UI.Media/) |
+
+## API
+
+- [CanvasPathGeometry Source Code](https://github.com/windows-toolkit/WindowsCommunityToolkit/blob/rel/7.1.0/Microsoft.Toolkit.Uwp.UI.Media/Geometry/CanvasPathGeometry.cs)
diff --git a/docs/archive/windows/carousel.md b/docs/archive/windows/carousel.md
new file mode 100644
index 00000000..19bff7a6
--- /dev/null
+++ b/docs/archive/windows/carousel.md
@@ -0,0 +1,101 @@
+---
+title: Carousel
+author: nmetulev
+description: The Carousel control inherits from ItemsControl, representing a nice and smooth carousel.
+keywords: windows 10, uwp, windows community toolkit, uwp community toolkit, uwp toolkit, carousel, xaml control, xaml
+dev_langs:
+ - csharp
+ - vb
+---
+
+# Carousel (Archived)
+
+**Important Note:** This document has been archived in the Windows Community Toolkit.
+
+While the Carousel control is not included in WCT 8.x, there are plans to introduce a modern, improved version in Community Toolkit Labs. The existing implementation from 7.x was deprecated due to its age and limitations, particularly around infinite scrolling functionality.
+
+Community interest and contributions are welcome to help accelerate this effort. You can track progress and express interest in the GitHub discussions:
+
+- [Carousel discussion in Labs](https://github.com/CommunityToolkit/Labs-Windows/discussions/498)
+
+For more information:
+- [Community Toolkit GitHub repository](https://github.com/CommunityToolkit/Windows)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+The [Carousel](/dotnet/api/microsoft.toolkit.uwp.ui.controls.carousel) control provides a new control, inherited from the [ItemsControl](/uwp/api/Windows.UI.Xaml.Controls.ItemsControl), representing a nice and smooth carousel.
+This control lets you specify a lot of properties for a flexible layouting.
+The `Carousel` control works fine with mouse, touch, mouse and keyboard as well.
+
+> [!div class="nextstepaction"]
+> [Try it in the sample app](uwpct://Controls?sample=Carousel)
+
+## Syntax
+
+```xaml
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Sample Output
+
+
+
+## Properties
+
+| Property | Type | Description |
+| -- | -- | -- |
+| EasingFunction | EasingFunctionBase | Gets or sets easing function to apply for each Transition |
+| InvertPositive | bool | Gets or sets a value indicating whether the items rendered transformations should be opposite compared to the selected item If false, all the items (except the selected item) will have the exact same transformations If true, all the items where index > selected index will have an opposite tranformation (Rotation X Y and Z will be multiply by -1) |
+| ItemDepth | int | Gets or sets depth of non Selected Index Items |
+| ItemMargin | int | Gets or sets the item margin |
+| ItemRotationX | double | Gets or sets rotation angle on X |
+| ItemRotationY | double | Gets or sets rotation angle on Y |
+| ItemRotationZ | double | Gets or sets rotation angle on Z |
+| Orientation | Orientation | Gets or sets the Carousel orientation. Horizontal or Vertical |
+| SelectedIndex | int | Gets or sets selected Index |
+| SelectedItem | object | Gets or sets the selected Item |
+| TransitionDuration | int | Gets or sets duration of the easing function animation in ms |
+
+## Events
+
+| Events | Description |
+| -- | -- |
+| SelectionChanged | Occurs when the selected item has changed |
+
+## Sample Project
+
+[Carousel Sample Page Source](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/Carousel). You can [see this in action](uwpct://Controls?sample=Carousel) in the [Windows Community Toolkit Sample App](https://aka.ms/windowstoolkitapp).
+
+## Default Template
+
+[Carousel XAML File](https://github.com/CommunityToolkit/WindowsCommunityToolkit/blob/rel/7.1.0/Microsoft.Toolkit.Uwp.UI.Controls.Layout/Carousel/Carousel.xaml) is the XAML template used in the toolkit for the default styling.
+
+## Requirements
+
+| Device family | Universal, 10.0.16299.0 or higher |
+| -- | -- |
+| Namespace | Microsoft.Toolkit.Uwp.UI.Controls |
+| NuGet package | [Microsoft.Toolkit.Uwp.UI.Controls](https://www.nuget.org/packages/Microsoft.Toolkit.Uwp.UI.Controls/) |
+
+## API
+
+* [Carousel source code](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.UI.Controls.Layout/Carousel)
diff --git a/docs/archive/windows/datagrid-guidance/customize-autogenerated-columns.md b/docs/archive/windows/datagrid-guidance/customize-autogenerated-columns.md
new file mode 100644
index 00000000..6b358f50
--- /dev/null
+++ b/docs/archive/windows/datagrid-guidance/customize-autogenerated-columns.md
@@ -0,0 +1,108 @@
+---
+title: How to - Customize Auto-Generated Columns in the DataGrid Control
+author: harinikmsft
+description: Guidance document that shows how to customize auto generated columns in the DataGrid control
+keywords: windows 10, uwp, windows community toolkit, windows toolkit, DataGrid, xaml control, xaml, AutoGenerateColumns
+---
+
+# How to: Customize Auto-Generated Columns in the DataGrid Control (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+While there are no immediate plans to port this component directly to 8.x, it's important to understand that:
+- The WCT 7.x DataGrid is still usable alongside WCT 8.x components for existing projects.
+- The DataGrid control has been deprecated in favor of the new DataTable component.
+
+For new development, we recommend using the DataTable component which offers improved functionality and is actively maintained. If you have specific needs that DataTable doesn't meet, please consider contributing to WCT Labs where component improvements are prototyped and incubated.
+
+For more information:
+- [DataGrid discussion in Labs](https://github.com/CommunityToolkit/Labs-Windows/discussions/415)
+- [Community Toolkit GitHub repository](https://github.com/CommunityToolkit/Windows)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+The [DataGrid](../datagrid.md) control supports the option to automatically generate columns based on the collection data bound through the **ItemsSource** property.
+
+```xaml
+
+
+```
+
+You can modify the **DataGrid.Columns** collection at run time regardless of whether it contains generated columns. However, if you specify columns in XAML, you should set AutoGenerateColumns to false in order to avoid duplication.
+
+You can handle the DataGrid's **AutoGeneratingColumn** event to modify, replace, or cancel a column that is being generated. The AutoGeneratingColumn event occurs one time for each public, non-static property in the bound data type when the ItemsSource property is changed and the AutoGenerateColumns property is true.
+
+## To handle the AutoGeneratingColumn event
+
+1. Create an event handler for the DataGrid's **AutoGeneratingColumn** event.
+
+ ```csharp
+ private void dataGrid1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
+ {
+ //...
+ }
+ ```
+
+2. Add the event handler to the DataGrid instances events.
+
+ ```xaml
+
+ ```
+
+## To modify a generated column
+
+In the AutoGeneratingColumn event handler, access the DataGridColumn properties by referencing the **DataGridAutoGeneratingColumnEventArgs.Column** property.
+
+```csharp
+//Modify the header of the "Name" column
+if (e.Column.Header.ToString() == "Name")
+{
+ e.Column.Header = "Task";
+}
+```
+
+## To replace a generated column
+
+1. In the AutoGeneratingColumn event handler, create a new **DataGridColumn**.
+
+ ```csharp
+ //Replace the DueDate column with a custom template column.
+ if (e.PropertyName == "DueDate")
+ {
+ //Create a new template column.
+ var templateColumn = new DataGridTemplateColumn();
+ templateColumn.Header = "Due Date";
+ //...
+ }
+ ```
+
+2. Replace the column from the **DataGridAutoGeneratingColumnEventArgs.Column** property with the new **DataGridColumn** instance.
+
+ ```csharp
+ //Replace the auto-generated column with the templateColumn.
+ e.Column = templateColumn;
+ ```
+
+## To cancel generation of a column
+
+Set the **Cancel** property to true.
+
+```csharp
+//Cancel AutoGeneration of all boolean columns.
+if (e.PropertyType == GetType(Boolean))
+{
+ e.Cancel = True;
+}
+```
+
+## See Also
+
+* [Add a DataGrid control to a page](datagrid-basics.md)
+* [Customize the DataGrid control using styling and formatting options](styling-formatting-options.md)
+* [Sizing options in the DataGrid control](sizing-options.md)
+* [DataGrid Sample Page Source](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/DataGrid)
diff --git a/docs/archive/windows/datagrid-guidance/datagrid-basics.md b/docs/archive/windows/datagrid-guidance/datagrid-basics.md
new file mode 100644
index 00000000..6ef3d390
--- /dev/null
+++ b/docs/archive/windows/datagrid-guidance/datagrid-basics.md
@@ -0,0 +1,299 @@
+---
+title: How to - Add a DataGrid control to a page
+author: harinikmsft
+description: Guidance document that shows how to add a DataGrid control and display data in rows and columns
+keywords: windows 10, uwp, windows community toolkit, windows toolkit, DataGrid, xaml control, xaml
+---
+
+# How to: Add a DataGrid control to a page (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+While there are no immediate plans to port this component directly to 8.x, it's important to understand that:
+- The WCT 7.x DataGrid is still usable alongside WCT 8.x components for existing projects.
+- The DataGrid control has been deprecated in favor of the new DataTable component.
+
+For new development, we recommend using the DataTable component which offers improved functionality and is actively maintained. If you have specific needs that DataTable doesn't meet, please consider contributing to WCT Labs where component improvements are prototyped and incubated.
+
+For more information:
+- [DataGrid discussion in Labs](https://github.com/CommunityToolkit/Labs-Windows/discussions/415)
+- [Community Toolkit GitHub repository](https://github.com/CommunityToolkit/Windows)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+The Windows 10 [DataGrid](../datagrid.md) control is part of the Windows Community Toolkit DataGrid library. To use the DataGrid control in your Windows 10 application, you need to add the appropriate reference to your application as shown in the following section.
+
+## Getting started with the DataGrid control
+
+The toolkit is available as NuGet packages that can be added to any existing or new project using Visual Studio.
+
+1. Download [Visual Studio 2017](https://developer.microsoft.com/windows/downloads) and ensure you choose the **Universal Windows Platform development** Workload in the Visual Studio installer.
+
+2. Open an existing project, or create a new project using the Blank App template under Visual C# -> Windows -> Universal. **Important**: Build 16299 or higher is supported by current version of the Toolkit.
+
+3. In Solution Explorer panel, right click on your project name and select **Manage NuGet Packages**. Search for **Microsoft.Toolkit.UWP.UI.Controls.DataGrid**, and choose the [Microsoft.Toolkit.Uwp.UI.Controls.DataGrid](https://www.nuget.org/packages/Microsoft.Toolkit.Uwp.UI.Controls.DataGrid/) nuget package.
+
+ 
+
+4. Add a reference to the toolkit and add the DataGrid control in your XAML page
+
+ * Add a reference at the top of your page
+
+ ```xaml
+ xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
+ ```
+
+ * Add the following XAML in your page to add the DataGrid control
+
+ ```xaml
+
+
+
+ ```
+
+5. Alternatively, you can add the DataGrid control directly in C# in your page code behind. **Important** You would either add it to the XAML directly or the code behind, not both.
+
+ * Add the namespaces to the toolkit
+
+ ```csharp
+ using Microsoft.Toolkit.Uwp.UI.Controls;
+ ```
+
+ * Add the control in your Loaded event
+
+ ```csharp
+ DataGrid dataGrid1 = new DataGrid();
+ LayoutRoot.Children.Add(dataGrid1);
+ ```
+
+## Binding a DataGrid to a data source
+
+You can use the **DataGrid.ItemsSource** property to bind to a collection that will be used to generate the contents of the DataGrid control. The following example demonstrates how to use the **ItemsSource** and **AutoGenerateColumns** properties to automatically display a collection of Customer data in rows and columns.
+
+```xaml
+
+```
+
+```csharp
+//backing data source in MyViewModel
+public class Customer
+{
+ public String FirstName { get; set; }
+ public String LastName { get; set; }
+ public String Address { get; set; }
+ public Boolean IsNew { get; set; }
+
+ public Customer(String firstName, String lastName,
+ String address, Boolean isNew)
+ {
+ this.FirstName = firstName;
+ this.LastName = lastName;
+ this.Address = address;
+ this.IsNew = isNew;
+ }
+
+ public static List Customers()
+ {
+ return new List(new Customer[4] {
+ new Customer("A.", "Zero",
+ "12 North Third Street, Apartment 45",
+ false),
+ new Customer("B.", "One",
+ "34 West Fifth Street, Apartment 67",
+ false),
+ new Customer("C.", "Two",
+ "56 East Seventh Street, Apartment 89",
+ true),
+ new Customer("D.", "Three",
+ "78 South Ninth Street, Apartment 10",
+ true)
+ });
+ }
+}
+```
+
+## Customizing columns
+
+By default, the DataGrid control generates columns automatically when you set the ItemsSource property as shown above. The generated columns are of type **DataGridCheckBoxColumn** for bound Boolean (and nullable Boolean) properties, and of type **DataGridTextColumn** for all other properties. If a property does not have a String or numeric value type, the generated text box columns are read-only and display the data object's ToString value.
+
+You can override the default automatic generation of columns by setting the **AutoGenerateColumns** property to False and explicitly creating the bound columns with styling in XAML as shown below.
+
+```xaml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+### DataGridComboBoxColumn
+
+In display mode the combobox column looks like the normal text column. In edit mode the column allows the user to select a value from a provided collection displayed in a **ComboBox** control.
+
+The **DataGridComboBoxColumn** contains the following specific properties:
+
+* **ItemsSource** (IEnumerable): This property is bound to a collection of objects representing the elements of the combobox (the source is the same for all cells in the column). The **ItemsSource** elements of the column must have at least one property with the same name as the elements of the **ItemsSource** belonging to the **DataGrid** itself.
+
+* **Binding** (Binding): This property binds the column to a property in the **DataGrid**'s **ItemsSource**. It also links this property to a property with the same name within the column's **ItemsSource**.
+
+* **DisplayMemberPath** (string): This property tells the column which property value to show in both display and edit mode. It's value must match the name of a property within the column's **ItemsSource** elements.
+
+The following code example demonstrates how to specify and configure a **DataGridComboBoxColumn** in XAML.
+
+```xaml
+
+
+
+
+
+
+
+
+```
+
+Code-Behind:
+
+```csharp
+public class Department
+{
+ public int DepartmentId { get; set; }
+ public string DepartmentName { get; set; }
+}
+
+public class Person
+{
+ public int PersonId { get; set; }
+ public int DepartmentId { get; set; }
+ public string FirstName { get; set; }
+ public string LastName { get; set; }
+ public string Position { get; set; }
+}
+public sealed partial class MainPage : Page
+{
+ public List Departments { get; set; }
+ public List Persons { get; set; }
+
+ public MainPage()
+ {
+ this.InitializeComponent();
+
+ Departments = new List
+ {
+ new Department {DepartmentId = 1, DepartmentName = "R&D"},
+ new Department {DepartmentId = 2, DepartmentName = "Finance"},
+ new Department {DepartmentId = 3, DepartmentName = "IT"}
+ };
+
+ Persons = new List
+ {
+ new Person
+ {
+ PersonId = 1, DepartmentId = 3, FirstName = "Ronald", LastName = "Rumple",
+ Position = "Network Administrator"
+ },
+ new Person
+ {
+ PersonId = 2, DepartmentId = 1, FirstName = "Brett", LastName = "Banner",
+ Position = "Software Developer"
+ },
+ new Person
+ {
+ PersonId = 3, DepartmentId = 2, FirstName = "Alice", LastName = "Anderson",
+ Position = "Accountant"
+ }
+ };
+ }
+}
+```
+
+### DataGridTemplateColumn
+
+The DataGridTemplateColumn type enables you to create your own column types by specifying the cell templates used to display values and enable editing. Set the **CellTemplate** property to specify the contents of cells that display values, but do not allow editing. Set the **CellEditingTemplate** property to specify the contents of cells in editing mode. If you set the column's **IsReadOnly** property to true, the CellEditingTemplate property value is never used.
+
+The following code example demonstrates how to specify and configure a DataGridTemplateColumn in XAML.
+
+```xaml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## See Also
+
+* [Customize the DataGrid control using styling and formatting options](styling-formatting-options.md)
+* [Sizing options in the DataGrid control](sizing-options.md)
+* [Default keyboard navigation and selection patterns](keyboard-navigation-selection.md)
+* [Display and configure Row Details](rowdetails.md)
+* [Configure Auto-generated columns in the DataGrid control](customize-autogenerated-columns.md)
+* [Group, sort and filter data using LINQ and the DataGrid control](group-sort-filter.md)
+* [Editing and input validation in the DataGrid control](editing-inputvalidation.md)
+* [DataGrid Sample Page Source](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/DataGrid)
diff --git a/docs/archive/windows/datagrid-guidance/editing-inputvalidation.md b/docs/archive/windows/datagrid-guidance/editing-inputvalidation.md
new file mode 100644
index 00000000..3b8ff6c2
--- /dev/null
+++ b/docs/archive/windows/datagrid-guidance/editing-inputvalidation.md
@@ -0,0 +1,80 @@
+---
+title: How to - Implement editing functionality
+author: harinikmsft
+description: Guidance document that shows how to implement editing and input validation functionality in the DataGrid control
+keywords: windows 10, uwp, windows community toolkit, windows toolkit, DataGrid, xaml control, xaml
+---
+
+# How to: Implement editing and input validation in DataGrid control (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+While there are no immediate plans to port this component directly to 8.x, it's important to understand that:
+- The WCT 7.x DataGrid is still usable alongside WCT 8.x components for existing projects.
+- The DataGrid control has been deprecated in favor of the new DataTable component.
+
+For new development, we recommend using the DataTable component which offers improved functionality and is actively maintained. If you have specific needs that DataTable doesn't meet, please consider contributing to WCT Labs where component improvements are prototyped and incubated.
+
+For more information:
+- [DataGrid discussion in Labs](https://github.com/CommunityToolkit/Labs-Windows/discussions/415)
+- [Community Toolkit GitHub repository](https://github.com/CommunityToolkit/Windows)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+## Cell and Row editing
+
+The [DataGrid](../datagrid.md) control supports cell and row editing functionality. By default, you can edit items directly in the DataGrid. The user can enter edit mode in a cell by pressing F2 key or double tapping on a cell. Alternatively, you can set the [DataGridColumn.IsReadOnly](/dotnet/api/microsoft.toolkit.uwp.ui.controls.datagridcolumn.isreadonly) property to true to disable editing in specific columns of the DataGrid.
+
+```xaml
+
+```
+
+
+
+A cell-level edit is committed when you move to another cell in the same row. All edits in a row are committed when you press ENTER or move to another row.
+
+To guarantee that edits can be committed and canceled correctly, the objects in the DataGrid must implement the [IEditableObject](/dotnet/api/system.componentmodel.ieditableobject) interface.
+
+### Editing methods and events
+
+The following table lists the methods and events supported by DataGrid for cell and row editing functionality.
+
+Type | Name | Description
+---|--- | ---
+Method | PreparingCellForEdit | Occurs when a cell in a DataGridTemplateColumn enters editing mode. This event does not occur for cells in other column types.
+Method | PrepareCellForEdit | Occurs when a cell in a column derived from DataGridColumn enters editing mode. This event does not occur for cells of type DataGridTemplateColumn.
+Method | BeginEdit | Causes the data grid to enter editing mode for the current cell and current row, unless the data grid is already in editing mode.
+Method | CommitEdit | Causes the data grid to commit the current edit to the data source, and optionally exit editing mode.
+Method | CancelEdit | Causes the data grid to cancel the current edit, restore the original value, and exit editing mode.
+Event | BeginningEdit | Occurs before a cell or row enters editing mode. This event lets you perform special processing before a cell or row enters editing mode.
+Event | CellEditEnding | Occurs when a cell edit is ending. You can cancel this event by setting the Cancel property of the e argument to true in the event handler. If this event is not canceled, the specified **EditAction** will be performed to commit or cancel the edit. After the edit has been successfully committed or canceled, the CellEditEnded event occurs.
+Event | CellEditEnded | Occurs when a cell edit has been committed or canceled.
+Event | RowEditEnding | Occurs when a row edit is ending. You can cancel this event by setting the Cancel property of the e argument to true in the event handler. If this event is not canceled, the specified **EditAction** will be performed to commit or cancel the edit. After the edit has been successfully committed or canceled, the RowEditEnded event occurs.
+Event | RowEditEnded | Occurs when a row edit has been committed or canceled.
+
+### Enumerations
+
+* **DataGridEditAction** enumeration : Specifies constants that define what action was taken to end an edit. Supported members are:
+ * Cancel: Edit was canceled.
+ * Commit: Edit was committed.
+* **DataGridEditingUnit** enumeration : Specifies constants that define whether editing is enabled on a cell level or on a row level. Supported members are:
+ * Cell: Cell editing is enabled.
+ * Row: Row editing is enabled.
+
+## Input Validation
+
+DataGrid control supports input validation through **INotifyDataErrorInfo** in your DataModel or ViewModel. Implement data validation logic by implementing **DataErrorsChangedEventArgs**, **HasErrors** and **GetErrors** methods. The DataGrid control automatically shows the error UI in the editing cell/row when the error conditions are met.
+
+
+
+See [DataGrid Sample](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/DataGrid) for an example of how to handle input validation in the DataGrid control.
+
+## See Also
+
+* [Add a DataGrid control to a page](datagrid-basics.md)
+* [Customize the DataGrid control through UI formatting options](styling-formatting-options.md)
+* [Keyboard navigation and selection](keyboard-navigation-selection.md)
+* [DataGrid Sample Page Source](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/DataGrid)
diff --git a/docs/archive/windows/datagrid-guidance/group-sort-filter.md b/docs/archive/windows/datagrid-guidance/group-sort-filter.md
new file mode 100644
index 00000000..e8ba3692
--- /dev/null
+++ b/docs/archive/windows/datagrid-guidance/group-sort-filter.md
@@ -0,0 +1,254 @@
+---
+title: How to - Group, Sort and Filter data in the DataGrid Control
+author: harinikmsft
+description: Guidance document that shows how to group, sort and filter data in the DataGrid control
+keywords: windows 10, uwp, windows community toolkit, windows toolkit, DataGrid, xaml control, xaml, group, sort, filter
+---
+
+# How to: Group, sort and filter data in the DataGrid Control (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+While there are no immediate plans to port this component directly to 8.x, it's important to understand that:
+- The WCT 7.x DataGrid is still usable alongside WCT 8.x components for existing projects.
+- The DataGrid control has been deprecated in favor of the new DataTable component.
+
+For new development, we recommend using the DataTable component which offers improved functionality and is actively maintained. If you have specific needs that DataTable doesn't meet, please consider contributing to WCT Labs where component improvements are prototyped and incubated.
+
+For more information:
+- [DataGrid discussion in Labs](https://github.com/CommunityToolkit/Labs-Windows/discussions/415)
+- [Community Toolkit GitHub repository](https://github.com/CommunityToolkit/Windows)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+It is often useful to view data in a DataGrid in different ways by grouping, sorting, and filtering the data. To group, sort, and filter the data in a DataGrid, you bind it to a [CollectionViewSource](/uwp/api/windows.ui.xaml.data.collectionviewsource). You can then manipulate the data in the backing data source using LINQ queries without affecting the underlying data. The changes in the collection view are reflected in the DataGrid user interface (UI).
+
+The following walk-throughs demonstrate how to implement grouping, sorting and filtering for the DataGrid control through examples.
+
+See [DataGrid Sample](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/DataGrid) for the complete sample code and running app.
+
+## 1. Grouping
+
+The DataGrid control has built-in row group header visuals for one-level grouping. You can set the DataGrid.ItemsSource to a grouped collection through [CollectionViewSource](/uwp/api/windows.ui.xaml.data.collectionviewsource) with **IsSourceGrouped** property set to True and the DataGrid will automatically show the contents grouped under row group headers based on the data source.
+
+The following walk-through shows how to implement and customize grouping in the DataGrid control.
+
+1. Add the DataGrid control to your XAML page
+
+ ```xaml
+
+
+
+ ```
+
+2. Create the grouped collection using LINQ
+
+ ```csharp
+ // Create grouping for collection
+ ObservableCollection> mountains = new ObservableCollection>();
+
+ //Implement grouping through LINQ queries
+ var query = from item in _items
+ group item by item.Range into g
+ select new { GroupName = g.Key, Items = g };
+
+ //Populate Mountains grouped collection with results of the query
+ foreach (var g in query)
+ {
+ GroupInfoCollection info = new GroupInfoCollection();
+ info.Key = g.GroupName;
+ foreach (var item in g.Items)
+ {
+ info.Add(item);
+ }
+ mountains.Add(info);
+ }
+ ```
+
+3. Populate a CollectionViewSource instance with the grouped collection and set IsSourceGrouped property to True.
+
+ ```csharp
+ //Create the CollectionViewSource and set to grouped collection
+ CollectionViewSource groupedItems = new CollectionViewSource();
+ groupedItems.IsSourceGrouped = true;
+ groupedItems.Source = mountains;
+ ```
+
+4. Set the ItemsSource of the DataGrid control
+
+ ```csharp
+ //Set the datagrid's ItemsSource to grouped collection view source
+ dg.ItemsSource = groupedItems.View;
+ ```
+
+5. Customize the Group header values through **RowGroupHeaderStyles**, **RowGroupHeaderPropertyNameAlternative** properties and by handling the **LoadingRowGroup** event to alter the auto-generated values in code.
+
+ ```xaml
+
+
+
+
+
+
+ ```
+
+ ```csharp
+ //Handle the LoadingRowGroup event to alter the grouped header property value to be displayed
+ private void dg_loadingRowGroup(object sender, DataGridRowGroupHeaderEventArgs e)
+ {
+ ICollectionViewGroup group = e.RowGroupHeader.CollectionViewGroup;
+ Mountain item = group.GroupItems[0] as Mountain;
+ e.RowGroupHeader.PropertyValue = item.Range;
+ }
+ ```
+
+
+
+## 2. Sorting
+
+Users can sort columns in the DataGrid control by tapping on the desired column headers. To implement sorting, the DataGrid control exposes the following mechanisms:
+
+* You can indicate columns are sortable in 2 ways. **CanUserSortColumns** property on DataGrid can be set to True to indicate all columns in the DataGrid control are sortable by the end user. Alternatively, you can also set **CanUserSort** property on individual DataGridColumns to control which columns are sortable by the end user. The default values for both properties is *True*. If both properties are set, any value of False will take precedence over a value of True.
+* You can indicate the sort direction of a column by setting **DataGridColumn.SortDirection?** property. The **DataGridSortDirection** enumeration allows the values of *Ascending* and *Descending*. The default value for SortDirection property is *null* (unsorted).
+* If DataGridColumn.SortDirection property is set to *Ascending*, an ascending sort icon (upward facing arrow) will be shown to the right of the column header indicating that the specific column has been sorted in the ascending order. The reverse is true for *Descending*. When the value is *null*, no icon will be shown.
+*Note: the DataGrid control does not automatically perform a sort when this property is set. The property is merely a tool for showing the correct built-in icon visual.*
+* If *DataGrid.CanUserSortColumns* and *DataGridColumn.CanUserSort* properties are both true, **DataGrid.Sorting** event will be fired when the end user taps on the column header. Sorting functionality can be implemented by handling this event.
+* You can use the **DataGridColumn.Tag** property to keep track of the bound column header during sort.
+
+The following walk-through shows how to implement sorting in the DataGrid control.
+
+1. Add the DataGrid control to your XAML page. Set the appropriate sort properties and add a handler for Sorting event.
+
+ ```xaml
+
+
+
+
+
+
+ ```
+
+2. Handle the Sorting event to implement logic for sorting
+
+ ```csharp
+ private void dg_Sorting(object sender, DataGridColumnEventArgs e)
+ {
+ //Use the Tag property to pass the bound column name for the sorting implementation
+ if (e.Column.Tag.ToString() == "Range")
+ {
+ //Use the Tag property to pass the bound column name for the sorting implementation
+ if (e.Column.Tag.ToString() == "Range")
+ {
+ //Implement sort on the column "Range" using LINQ
+ if (e.Column.SortDirection == null || e.Column.SortDirection == DataGridSortDirection.Descending)
+ {
+ dg.ItemsSource = new ObservableCollection(from item in _items
+ orderby item.Range ascending
+ select item);
+ e.Column.SortDirection = DataGridSortDirection.Ascending;
+ }
+ else
+ {
+ dg.ItemsSource = new ObservableCollection(from item in _items
+ orderby item.Range descending
+ select item);
+ e.Column.SortDirection = DataGridSortDirection.Descending;
+ }
+ }
+ // add code to handle sorting by other columns as required
+
+ // Remove sorting indicators from other columns
+ foreach (var dgColumn in dg.Columns)
+ {
+ if (dgColumn.Tag.ToString() != e.Column.Tag.ToString())
+ {
+ dgColumn.SortDirection = null;
+ }
+ }
+ }
+ }
+ ```
+
+3. Set the SortDirection property to the appropriate value for showing the built-in ascending sort icon in column header
+
+ ```csharp
+ //Show the ascending icon when acending sort is done
+ e.Column.SortDirection = DataGridSortDirection.Ascending;
+
+ //Show the descending icon when descending sort is done
+ e.Column.SortDirection = DataGridSortDirection.Descending;
+
+ //Clear the SortDirection in a previously sorted column when a different column is sorted
+ previousSortedColumn.SortDirection = null;
+ ```
+
+
+
+## 3. Filtering
+
+The DataGrid control does not support any built-in filtering capabilities. The following walk-through shows how you can implement your own filtering visuals and apply it to the DataGrid's content.
+
+1. Add the DataGrid control to your XAML page.
+
+ ```xaml
+
+ ```
+
+2. Add buttons for filtering the DataGrid's content. It is recommended to use the **CommandBar** control with **AppBarButtons** to add filtering visuals at the top of your page. The following example shows a CommandBar with the title for the table and one filter button.
+
+ ```xaml
+
+
+
+ ```
+
+3. Handle the AppBarButton's Click event to implement the filtering logic.
+
+ ```csharp
+ private void rankLowFilter_Click(object sender, RoutedEventArgs e)
+ {
+ dg.ItemsSource = new ObservableCollection(from item in _items
+ where item.Rank < 50
+ select item);
+ }
+ ```
+
+## Example app
+
+For the complete example of all the capabilities in this section in a running application, see [DataGrid Sample](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/DataGrid).
+
+## See Also
+
+* [Add a DataGrid control to a page](datagrid-basics.md)
+* [Configure Auto-generated columns in the DataGrid control](customize-autogenerated-columns.md)
+* [Editing and input validation in the DataGrid control](editing-inputvalidation.md)
diff --git a/docs/archive/windows/datagrid-guidance/keyboard-navigation-selection.md b/docs/archive/windows/datagrid-guidance/keyboard-navigation-selection.md
new file mode 100644
index 00000000..1820fb09
--- /dev/null
+++ b/docs/archive/windows/datagrid-guidance/keyboard-navigation-selection.md
@@ -0,0 +1,121 @@
+---
+title: Keyboard navigation and selection concepts in the DataGrid control
+author: harinikmsft
+description: Guidance document that shows how to use keyboard to navigate the DataGrid control and selection models
+keywords: windows 10, uwp, windows community toolkit, windows toolkit, DataGrid, xaml control, xaml, keyboard
+---
+
+# DataGrid keyboard navigation and selection modes (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+While there are no immediate plans to port this component directly to 8.x, it's important to understand that:
+- The WCT 7.x DataGrid is still usable alongside WCT 8.x components for existing projects.
+- The DataGrid control has been deprecated in favor of the new DataTable component.
+
+For new development, we recommend using the DataTable component which offers improved functionality and is actively maintained. If you have specific needs that DataTable doesn't meet, please consider contributing to WCT Labs where component improvements are prototyped and incubated.
+
+For more information:
+- [DataGrid discussion in Labs](https://github.com/CommunityToolkit/Labs-Windows/discussions/415)
+- [Community Toolkit GitHub repository](https://github.com/CommunityToolkit/Windows)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+## Keyboard behaviors
+
+### Keyboarding in Column headers
+
+The user can use TAB key to set keyboard focus to the current column headers. If the user can sort the columns, pressing ENTER key on the column header sorts that column. LEFT/RIGHT arrow keys move focus to column headers to the left and right of the currently focused column header. DOWN arrow key from a column header moves focus to the cell in the first row directly below the column header.
+
+### Keyboarding in cells
+
+The following table lists the default keyboard behavior within the cells of the DataGrid control.
+
+Key or key combination | Description
+---|---
+DOWN ARROW | Moves the focus to the cell directly below the current cell. If the focus is in the last row, pressing the DOWN ARROW does nothing.
+UP ARROW | Moves the focus to the cell directly above the current cell. If the focus is in the first row, pressing the UP ARROW does nothing.
+LEFT ARROW | Moves the focus to the previous cell in the row. If the focus is in the first cell in the row, pressing the LEFT ARROW does nothing. If the focus is on a row group header, pressing the LEFT ARROW collapses the group.
+RIGHT ARROW | Moves the focus to the next cell in the row. If the focus is in the last cell in the row, pressing the RIGHT ARROW does nothing. If the focus is on a row group header, pressing the RIGHT ARROW expands the group.
+HOME | Moves the focus to the first cell in the current row.
+END | Moves the focus to the last cell in the current row.
+PAGE DOWN | Scrolls the control downward by the number of rows that are displayed. Moves the focus to the last displayed row without changing columns. If the last row is only partially displayed, scrolls the grid to fully display the last row.
+PAGE UP | Scrolls the control upward by the number of rows that are displayed. Moves focus to the first displayed row without changing columns. If the first row is only partially displayed, scrolls the grid to fully display the first row.
+TAB | If the current cell is in edit mode, moves the focus to the next cell in the current row. If the focus is already in the last cell of the row, commits any changes that were made and moves the focus to the first cell in the next row. If the focus is in the last cell in the control, moves the focus to the next control in the tab order of the parent container. If the current cell is not in edit mode, moves the focus to the next control in the tab order of the parent container.
+SHIFT+TAB | If the current cell is in edit mode, moves the focus to the previous cell in the current row. If the focus is already in the first cell of the row, commits any changes that were made and moves the focus to the last cell in the previous row. If the focus is in the first cell in the control, moves the focus to the previous control in the tab order of the parent container. If the current cell is not in edit mode, moves the focus to the previous control in the tab order of the parent container.
+CTRL+DOWN ARROW | Moves the focus to the last cell in the current column.
+CTRL+UP ARROW | Moves the focus to the first cell in the current column.
+CTRL+RIGHT ARROW | Moves the focus to the last cell in the current row.
+CTRL+LEFT ARROW | Moves the focus to the first cell in the current row.
+CTRL+HOME | Moves the focus to the first cell in the control.
+CTRL+END | Moves the focus to the last cell in the control.
+CTRL+PAGE DOWN | Same as PAGE DOWN.
+CTRL+PAGE UP | Same as PAGE UP.
+F2 | If the DataGrid.IsReadOnly property is false and the DataGridColumn.IsReadOnly property is false for the current column, puts the current cell into cell edit mode.
+ENTER | Commits any changes to the current cell and row and moves the focus to the cell directly below the current cell. If the focus is in the last row, commits any changes without moving the focus.
+ESC | If the control is in edit mode, cancels the edit and reverts any changes that were made in the control. If the underlying data source implements IEditableObject, pressing ESC a second time cancels edit mode for the entire row.
+BACKSPACE | Deletes the character before the cursor when editing a cell.
+DELETE | Deletes the character after the cursor when editing a cell.
+CTRL+ENTER | Commits any changes to the current cell without moving the focus.
+
+## Selection behaviors
+
+The DataGrid control supports single row selection as well as multiple rows selection through the **DataGrid.SelectionMode** property. The **DataGridSelectionMode** enumeration has the following member values:
+
+* **Extended** : The user can select multiple items while holding down the SHIFT or CTRL keys during selection.
+* **Single** : The user can select only one item at a time.
+
+```xaml
+
+```
+
+
+
+If the **SelectionMode** property is set to **Extended**, the navigation behavior does not change, but navigating with the keyboard while pressing SHIFT (including CTRL+SHIFT) will modify a multi-row selection. Before navigation starts, the control marks the current row as an anchor row. When you navigate while pressing SHIFT, the selection includes all rows between the anchor row and the current row.
+
+The following selection keys modify multi-row selection.
+
+* SHIFT+DOWN ARROW
+* SHIFT+UP ARROW
+* SHIFT+LEFT ARROW
+* SHIFT+RIGHT ARROW
+* SHIFT+HOME
+* SHIFT+END
+* SHIFT+PAGE DOWN
+* SHIFT+PAGE UP
+* CTRL+SHIFT+DOWN ARROW
+* CTRL+SHIFT+UP ARROW
+* CTRL+SHIFT+LEFT ARROW
+* CTRL+SHIFT+RIGHT ARROW
+* CTRL+SHIFT+HOME
+* CTRL+SHIFT+END
+* CTRL+SHIFT+PAGE DOWN
+* CTRL+SHIFT+PAGE UP
+
+## Pointer behaviors
+
+The following table lists the default behaviors for pointer (mouse/touch/pen) actions.
+
+Pointer action | Description
+---|---
+Tap an unselected cell | Makes the tapped cell's row the currently selected row with focus on the tapped cell.
+Double-tap a cell | Puts the cell into edit mode.
+Drag a column header cell | If the DataGrid.CanUserReorderColumns property is true and the DataGridColumn.CanUserReorder property is true for the current column, moves the column so that it can be dropped into a new position.
+Drag a column header separator | If the DataGrid.CanUserResizeColumns property is true and the DataGridColumn.CanUserResize property is true for the current column, resizes the column.
+Tap a column header | If the DataGrid.CanUserSortColumns property is true and the DataGridColumn.CanUserSort property is true for the current column, sorts the column. Tapping the header of a column that is already sorted will reverse the sort direction of that column.
+CTRL+tap a row | If SelectionMode is set to Extended, modifies a non-contiguous multi-row selection. If the row is already selected, deselects the row.
+SHIFT+tap a row | If SelectionMode is set to Extended, modifies a contiguous multi-row selection.
+Tap a row group header expander button | Expands or collapses the group.
+Double-tap a row group header | Expands or collapses the group.
+
+## See Also
+
+* [Add a DataGrid control to a page](datagrid-basics.md)
+* [Customize the DataGrid control using styling and formatting options](styling-formatting-options.md)
+* [Sizing options in the DataGrid control](sizing-options.md)
+* [Group, sort and filter data using LINQ and the DataGrid control](group-sort-filter.md)
+* [Editing and input validation in the DataGrid control](editing-inputvalidation.md)
+* [DataGrid Sample Page Source](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/DataGrid)
diff --git a/docs/archive/windows/datagrid-guidance/rowdetails.md b/docs/archive/windows/datagrid-guidance/rowdetails.md
new file mode 100644
index 00000000..c003f4db
--- /dev/null
+++ b/docs/archive/windows/datagrid-guidance/rowdetails.md
@@ -0,0 +1,116 @@
+---
+title: Display and Configure Row Details in DataGrid
+author: harinikmsft
+description: Guidance document that shows how to customize row details section in the DataGrid control
+keywords: windows 10, uwp, windows community toolkit, windows toolkit, DataGrid, xaml control, xaml, RowDetails
+---
+
+# How to: Display and Configure Row Details in the DataGrid Control (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+While there are no immediate plans to port this component directly to 8.x, it's important to understand that:
+- The WCT 7.x DataGrid is still usable alongside WCT 8.x components for existing projects.
+- The DataGrid control has been deprecated in favor of the new DataTable component.
+
+For new development, we recommend using the DataTable component which offers improved functionality and is actively maintained. If you have specific needs that DataTable doesn't meet, please consider contributing to WCT Labs where component improvements are prototyped and incubated.
+
+For more information:
+- [DataGrid discussion in Labs](https://github.com/CommunityToolkit/Labs-Windows/discussions/415)
+- [Community Toolkit GitHub repository](https://github.com/CommunityToolkit/Windows)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+Each row in the [DataGrid](../datagrid.md) control can be expanded to display a row details section. The row details section is defined by a [DataTemplate](/uwp/api/windows.ui.xaml.datatemplate) that specifies the appearance of the section and the data to be displayed.
+
+
+
+The row details section can be displayed for selected rows, displayed for all rows, or it can be collapsed. The row details section can also be frozen so that it does not scroll horizontally when the DataGrid is scrolled.
+
+## To display a row details section using inline XAML
+
+1. Create a [DataTemplate](/uwp/api/windows.ui.xaml.datatemplate) that defines the appearance of the row details section.
+2. Place the DataTemplate inside the tags.
+
+```xaml
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## To display a row details section using a DataTemplate resource
+
+1. Create a [DataTemplate](/uwp/api/windows.ui.xaml.datatemplate) that defines the appearance of the row details section.
+2. Identify the DataTemplate by assigning a value to the [x:Key Attribute](/windows/uwp/xaml-platform/x-key-attribute).
+3. Bind the DataTemplate to the DataGrid's **RowDetailsTemplate** property.
+
+```xaml
+
+
+
+
+
+
+
+
+
+
+```
+
+## To change the visibility of a row details section
+
+Set the **RowDetailsVisibilityMode** property to a value of the **DataGridRowDetailsVisibilityMode** enumeration:
+
+* *Collapsed* : The row details section is not displayed for any rows.
+* *Visible* : The row details section is displayed for all rows.
+* *VisibleWhenSelected* : The row details section is displayed only for selected rows.
+
+The following example shows how to use the RowDetailsVisibilityMode property to change the row details display mode programmatically from the selection of a value in a ComboBox:
+
+```csharp
+// Set the row details visibility to the option selected in the combo box.
+private void cbRowDetailsVis_SelectionChanged(object sender, RoutedEventArgs e)
+{
+ ComboBox cb = sender as ComboBox;
+ ComboBoxItem cbi = cb.SelectedItem as ComboBoxItem;
+ if (this.dataGrid1 != null)
+ {
+ if (cbi.Content.ToString() == "Selected Row (Default)")
+ dataGrid1.RowDetailsVisibilityMode = DataGridRowDetailsVisibilityMode.VisibleWhenSelected;
+ else if (cbi.Content.ToString() == "None")
+ dataGrid1.RowDetailsVisibilityMode = DataGridRowDetailsVisibilityMode.Collapsed;
+ else if (cbi.Content.ToString() == "All")
+ dataGrid1.RowDetailsVisibilityMode = DataGridRowDetailsVisibilityMode.Visible;
+ }
+}
+```
+
+## To prevent a row details section from scrolling horizontally
+
+Set the **AreRowDetailsFrozen** property to true.
+
+```xaml
+
+```
+
+## See Also
+
+* [Add a DataGrid control to a page](datagrid-basics.md)
+* [Customize the DataGrid control using styling and formatting options](styling-formatting-options.md)
+* [Sizing options in the DataGrid control](sizing-options.md)
+* [DataGrid Sample](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/DataGrid).
diff --git a/docs/archive/windows/datagrid-guidance/sizing-options.md b/docs/archive/windows/datagrid-guidance/sizing-options.md
new file mode 100644
index 00000000..fe59ec56
--- /dev/null
+++ b/docs/archive/windows/datagrid-guidance/sizing-options.md
@@ -0,0 +1,108 @@
+---
+title: Sizing options in the DataGrid control
+author: harinikmsft
+description: Guidance document that shows how to size the rows, columns and headers of the DataGrid control
+keywords: windows 10, uwp, windows community toolkit, windows toolkit, DataGrid, xaml control, xaml
+---
+
+# Sizing Options in the DataGrid Control (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+While there are no immediate plans to port this component directly to 8.x, it's important to understand that:
+- The WCT 7.x DataGrid is still usable alongside WCT 8.x components for existing projects.
+- The DataGrid control has been deprecated in favor of the new DataTable component.
+
+For new development, we recommend using the DataTable component which offers improved functionality and is actively maintained. If you have specific needs that DataTable doesn't meet, please consider contributing to WCT Labs where component improvements are prototyped and incubated.
+
+For more information:
+- [DataGrid discussion in Labs](https://github.com/CommunityToolkit/Labs-Windows/discussions/415)
+- [Community Toolkit GitHub repository](https://github.com/CommunityToolkit/Windows)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+Various options are available to control how the [DataGrid](../datagrid.md) sizes itself. The DataGrid, and individual rows and columns in the DataGrid, can be set to size automatically to their contents or can be set to specific values. By default, the DataGrid will grow and shrink to fit the size of its contents.
+
+## Sizing the DataGrid
+
+### Cautions When Using Automatic Sizing
+
+By default, the **Height** and **Width** properties of the [DataGrid](../datagrid.md) are set to *Double.NaN* ("Auto" in XAML), and the DataGrid will adjust to the size of its contents.
+
+When placed inside a container that does not restrict the size of its children, such as a [StackPanel](/uwp/api/windows.ui.xaml.controls.stackpanel), the DataGrid, like [ListView](/uwp/api/windows.ui.xaml.controls.listview) and other scrollable controls, will stretch beyond the visible bounds of the container and scrollbars will not be shown. This condition has both usability and performance implications.
+
+When bound to a data set, if the Height of the DataGrid is not restricted, it will continue to add a row for each data item in the bound data set. This can cause the DataGrid to grow outside the visible bounds of your application as rows are added. The DataGrid will not show scrollbars in this case because its Height will continue to grow to accommodate the new rows.
+
+An object is created for each row in the DataGrid. If you are working with a large data set and you allow the DataGrid to automatically size itself, the creation of a large number of objects may affect the performance of your application.
+
+To avoid these issues when you work with large data sets, it is recommended that you specifically set the Height of the DataGrid or place it in a container that will restrict its Height, such as a [Grid](/uwp/api/windows.ui.xaml.controls.grid) or [RelativePanel](/uwp/api/windows.ui.xaml.controls.relativepanel). When the Height is restricted, the DataGrid will only create the rows that will fit within its specified Height, and will recycle those rows as needed to display new data.
+
+### Setting the DataGrid Size
+
+The DataGrid can be set to automatically size within specified boundaries, or the DataGrid can be set to a specific size. The following table shows the properties that can be set to control the DataGrid size.
+
+| Property | Description |
+|---|---|
+| Height | Sets a specific height for the DataGrid. |
+| MaxHeight | Sets the upper bound for the height of the DataGrid. The DataGrid will grow vertically until it reaches this height. |
+| MinHeight | Sets the lower bound for the height of the DataGrid. The DataGrid will shrink vertically until it reaches this height. |
+| Width | Sets a specific width for the DataGrid. |
+| MaxWidth | Sets the upper bound for the width of the DataGrid. The DataGrid will grow horizontally until it reaches this width.|
+| MinWidth | Sets the lower bound for the width of the DataGrid. The DataGrid will shrink horizontally until it reaches this width. |
+
+## Sizing Rows and Row Headers
+
+### DataGrid Rows
+
+By default, a DataGrid row's Height property is set to Double.NaN ("Auto" in XAML), and the row height will expand to the size of its contents. The height of all rows in the DataGrid can be specified by setting the **DataGrid.RowHeight** property. Users cannot change the row height by dragging the row header dividers.
+
+### DataGrid Row Headers
+
+By default, DataGrid row headers are not displayed. To display row headers, the **HeadersVisibility** property must be set to *DataGridHeadersVisibility.Row* or *DataGridHeadersVisibility.All* and the DataGrid's ControlTemplate should be altered to provide a visual for the RowHeader as desired. By default, when row headers are displayed, they automatically size to fit their content. The row headers can be given a specific width by setting the **DataGrid.RowHeaderWidth** property.
+
+## Sizing Columns and Column Headers
+
+### DataGrid Columns
+
+The DataGrid uses values of the **DataGridLength** and the **DataGridLengthUnitType** structure to specify absolute or automatic sizing modes.
+The following table shows the values provided by the DataGridLengthUnitType structure.
+
+| Name | Description |
+|---|---|
+| Auto | The default automatic sizing mode sizes DataGrid columns based on the contents of both cells and column headers. |
+| SizeToCells | The cell-based automatic sizing mode sizes DataGrid columns based on the contents of cells in the column, not including column headers.|
+| SizeToHeader | The header-based automatic sizing mode sizes DataGrid columns based on the contents of column headers only.|
+| Pixel | The pixel-based sizing mode sizes DataGrid columns based on the numeric value provided.|
+| Star | The star sizing mode is used to distribute available space by weighted proportions. In XAML, star values are expressed as n\* where n represents a numeric value. 1\* is equivalent to \*. For example, if two columns in a DataGrid had widths of \* and 2\*, the first column would receive one portion of the available space and the second column would receive two portions of the available space.
+
+The **DataGridLengthConverter** class can be used to convert data between numeric or string values and DataGridLength values.
+
+By default, the **DataGrid.ColumnWidth** property is set to Auto, and the **DataGridColumn.Width** property is null. When the sizing mode is set to Auto or SizeToCells, columns will grow to the width of their widest visible content. When scrolling, these sizing modes will cause columns to expand if content that is larger than the current column size is scrolled into view. The column will not shrink after the content is scrolled out of view.
+
+Columns in the DataGrid can also be set to automatically size only within specified boundaries, or columns can be set to a specific size. The following table shows the properties that can be set to control column sizes.
+
+| Property | Description |
+|---|---|
+| DataGrid.MaxColumnWidth | Sets the upper bound for all columns in the DataGrid.|
+| DataGridColumn.MaxWidth | Sets the upper bound for an individual column. Overrides DataGrid.MaxColumnWidth.|
+| DataGrid.MinColumnWidth | Sets the lower bound for all columns in the DataGrid.|
+| DataGridColumn.MinWidth | Sets the lower bound for an individual column. Overrides DataGrid.MinColumnWidth.|
+| DataGrid.ColumnWidth | Sets a specific width for all columns in the DataGrid.|
+| DataGridColumn.Width | Sets a specific width for an individual column. Overrides DataGrid.ColumnWidth.|
+
+### DataGrid Column Headers
+
+By default, DataGrid column headers are displayed. To hide column headers, the **HeadersVisibility** property must be set to *DataGridHeadersVisibility.Row* or *DataGridHeadersVisibility.None*. By default, when column headers are displayed, they automatically size to fit their content. The column headers can be given a specific height by setting the **DataGrid.ColumnHeaderHeight** property.
+
+### Resizing columns by the end user
+
+Users can resize DataGrid columns by dragging the column header dividers with mouse/touch/pen. The DataGrid does not support automatic resizing of columns by double-clicking the column header divider. To prevent a user from resizing particular columns, set the **DataGridColumn.CanUserResize** property to false for the individual columns. To prevent users from resizing all columns, set the **DataGrid.CanUserResizeColumns** property to false.
+
+## See Also
+
+* [Add a DataGrid control to a page](datagrid-basics.md)
+* [Customize the DataGrid control using styling and formatting options](styling-formatting-options.md)
+* [DataGrid Sample Page Source](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/DataGrid)
diff --git a/docs/archive/windows/datagrid-guidance/styling-formatting-options.md b/docs/archive/windows/datagrid-guidance/styling-formatting-options.md
new file mode 100644
index 00000000..c3d7d346
--- /dev/null
+++ b/docs/archive/windows/datagrid-guidance/styling-formatting-options.md
@@ -0,0 +1,164 @@
+---
+title: Customize the DataGrid control
+author: harinikmsft
+description: Guidance document that shows how to use the different formatting options to customize the look and feel of the DataGrid control
+keywords: windows 10, uwp, windows community toolkit, windows toolkit, DataGrid, xaml control, xaml
+---
+
+# How to - Customize the DataGrid control through UI formatting options (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+While there are no immediate plans to port this component directly to 8.x, it's important to understand that:
+- The WCT 7.x DataGrid is still usable alongside WCT 8.x components for existing projects.
+- The DataGrid control has been deprecated in favor of the new DataTable component.
+
+For new development, we recommend using the DataTable component which offers improved functionality and is actively maintained. If you have specific needs that DataTable doesn't meet, please consider contributing to WCT Labs where component improvements are prototyped and incubated.
+
+For more information:
+- [DataGrid discussion in Labs](https://github.com/CommunityToolkit/Labs-Windows/discussions/415)
+- [Community Toolkit GitHub repository](https://github.com/CommunityToolkit/Windows)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+The [DataGrid](../datagrid.md) control supports various styling and formatting options both through XAML at design time as well as procedurally in code. Some of the common ways to customize the look and feel of the DataGrid control include the following:
+
+## 1. GridLines
+
+You can control the visibility of the grid lines separating inner cells using the **DataGrid.GridLinesVisibility** property. The **DataGridGridLinesVisibility** enumeration has the following member values:
+
+* *None*: No grid lines are shown
+* *Horizontal*: Only horizontal grid lines, which separate rows, are shown.
+* *Vertical*: Only vertical grid lines, which separate columns, are shown.
+* *All*: Both horizontal and vertical grid lines are shown.
+
+You can also change the color of the gridlines using **HorizontalGridLinesBrush** and/or **VerticalGridLinesBrush** properties.
+
+```xaml
+
+```
+
+
+
+## 2. Alternating rows
+
+You can set the **RowBackground**, **RowForeground**, **AlternatingRowBackground** and **AlternatingRowForeground** properties to desired brushes and create customized alternating rows for your DataGrid control.
+
+The RowBackground and RowForeground properties are used to paint the background and foreground of all rows in the DataGrid control. If AlternatingRowBackground and/or AlternatingRowForeground properties are not null, their values override the RowBackground and RowForeground values for odd-numbered rows.
+
+```xaml
+
+```
+
+
+
+## 3. Headers visibility
+
+You can toggle the visibility of row and column headers using the **DataGrid.HeadersVisibility** property. The **DataGridHeadersVisibility** enumeration has the following member values:
+
+* *All*: Both column and row header cells are displayed.
+* *Column*: Only column header cells are displayed.
+* *Row*: Only row header cells are displayed.
+* *None*: No header cells are displayed.
+
+Note: By default, DataGrid row headers are not displayed. To display row headers, the **HeadersVisibility** property must be set to *DataGridHeadersVisibility.Row* or *DataGridHeadersVisibility.All* and the DataGrid's ControlTemplate should be altered to provide a visual for the RowHeader as desired.
+
+```xaml
+
+```
+
+
+
+## 4. Customizable templates and styling for cells, rows and headers
+
+All individual parts of the DataGrid control are customizable through simple Style properties such as:
+
+* *CellStyle* : style that is used when rendering the data grid cells.
+* *RowStyle* : style that is used when rendering the rows.
+* *ColumnHeaderStyle* : style that is used when rendering the column headers.
+* *RowGroupHeaderStyles* : style that is used when rendering the row group header. The DataGrid control currently supports one-level grouping only - the first style specified as part of RowGroupHeaderStyles will be applied to the row group header.
+* *RowHeaderStyle* : style that is used when rendering the row headers. The DataGrid control does not have a default visual for the row header. To provide one you must provide a `ContentTemplate` for `Microsoft.Toolkit.Uwp.UI.Controls.Primitives.DataGridRowHeader`. For Example:
+
+```xaml
+xmlns:wctprimitives="using:Microsoft.Toolkit.Uwp.UI.Controls.Primitives"
+
+// This will display the column headers as one cell with the heading text
+
+
+
+```
+
+OR
+
+```xaml
+// This will display the individual column headers if defined
+
+
+
+```
+
+Whether defined as an inline style or as a resource, the Style defines the appearance of cells/rows/columns/headers in the data grid, and should specify the appropriate TargetType (say, **DataGridCell** for CellStyle). You typically specify setters for individual properties, and might also use a setter for the Template property if you wanted to change the composition of elements.
+
+You can also use properties such as **RowHeight**, **RowHeaderWidth**, **ColumnWidth**, **ColumnHeaderHeight** etc., to customize the sizing of the various parts of the DataGrid control.
+
+```xaml
+
+
+
+```
+
+## 5. Frozen columns
+
+Frozen columns are columns that are always displayed and cannot be scrolled out of visibility. Frozen columns are always the leftmost columns in display order. You cannot drag frozen columns into the group of unfrozen columns or drag unfrozen columns into the group of frozen columns. Set the **DataGrid.FrozenColumnCount** property to the desired number of columns that the user should not scroll horizontally.
+
+```xaml
+
+```
+
+
+
+## 6. Reorder and resize columns
+
+You can allow users to:
+
+* Adjust all column widths using mouse/touch/pen through the **DataGrid.CanUserResizeColumns** property.
+* Change the column display order by dragging the column headers using mouse/touch/pen through the **DataGrid.CanUserReorderColumns** property.
+* Set this behavior for individual columns by setting the **DataGridColumn.CanUserReorder/CanUserResize** properties. If the individual column properties and the global DataGrid.** properties are both set, a value of false will take precedence over a value of true.
+
+```xaml
+
+```
+
+
+
+## See Also
+
+* [Add a DataGrid control to a page](datagrid-basics.md)
+* [Sizing options in the DataGrid control](sizing-options.md)
+* [Default keyboard navigation and selection patterns](keyboard-navigation-selection.md)
+* [Display and configure Row Details](rowdetails.md)
+* [Configure Auto-generated columns in the DataGrid control](customize-autogenerated-columns.md)
+* [Group, sort and filter data using LINQ and the DataGrid control](group-sort-filter.md)
+* [Editing and input validation in the DataGrid control](editing-inputvalidation.md)
+* [DataGrid Sample Page Source](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/DataGrid)
diff --git a/docs/archive/windows/datagrid.md b/docs/archive/windows/datagrid.md
new file mode 100644
index 00000000..c8dcc44c
--- /dev/null
+++ b/docs/archive/windows/datagrid.md
@@ -0,0 +1,75 @@
+---
+title: DataGrid
+author: harinikmsft
+description: The DataGrid Control presents data in a customizable table of rows and columns.
+keywords: windows 10, uwp, uwp community toolkit, uwp toolkit, DataGrid, xaml control, xaml
+---
+
+# DataGrid (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+While there are no immediate plans to port this component directly to 8.x, it's important to understand that:
+- The WCT 7.x DataGrid is still usable alongside WCT 8.x components for existing projects.
+- The DataGrid control has been deprecated in favor of the new DataTable component.
+
+For new development, we recommend using the DataTable component which offers improved functionality and is actively maintained.
+
+If you have specific needs that DataTable doesn't meet, please consider contributing to WCT Labs where component improvements are prototyped and incubated.
+
+For more information:
+- [DataTable discussion in Labs](https://github.com/CommunityToolkit/Labs-Windows/discussions/415)
+- [Community Toolkit GitHub repository](https://github.com/CommunityToolkit/Windows)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+The DataGrid control provides a flexible way to display a collection of data in rows and columns.
+
+
+
+> [!NOTE]
+> The DataGrid control is not part of the WinUI 3 controls available in the Windows Community Toolkit version 8.0 and later yet. The control is available for UWP and Uno Platform apps in Windows Community Toolkit version 7.1.0.
+
+The built-in column types include a text column, a check box column, a combobox column and a template column for hosting custom content. The built-in row type includes a drop-down details section that you can use to display additional content below the cell values.
+
+The DataGrid control supports common table formatting options, such as alternating row backgrounds and foregrounds and the ability to show or hide headers, grid lines, and scroll bars. Additionally, the control provides several style and template properties that you can use to completely change the appearance of the control and its rows, columns, cells, and row or column headers.
+
+The DataGrid has built-in support for Narrator and Touch Narrator to help blind users to navigate and interact easily with the control. Additionally, the control has built-in support for extensive keyboard navigation through cells, headers, rows and columns.
+
+## How-Tos
+
+The following guidance sections describe the additional concepts and techniques that you can use to build DataGrid control features into your applications:
+
+* [Add a DataGrid control to a page](datagrid-guidance/datagrid-basics.md)
+* [Customize the DataGrid control using styling and formatting options](datagrid-guidance/styling-formatting-options.md)
+* [Sizing options in the DataGrid control](datagrid-guidance/sizing-options.md)
+* [Default keyboard navigation and selection patterns](datagrid-guidance/keyboard-navigation-selection.md)
+* [Display and configure Row Details](datagrid-guidance/rowdetails.md)
+* [Configure Auto-generated columns in the DataGrid control](datagrid-guidance/customize-autogenerated-columns.md)
+* [Group, sort and filter data using LINQ and the DataGrid control](datagrid-guidance/group-sort-filter.md)
+* [Editing and input validation in the DataGrid control](datagrid-guidance/editing-inputvalidation.md)
+
+## Sample Project
+
+Here's the [DataGrid sample source code](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/DataGrid).
+
+If you have the **WinUI 2 Gallery** app installed, you can use the app to see the DataGrid in action.
+
+* [Get the WinUI 2 Gallery app (Microsoft Store)](https://apps.microsoft.com/detail/9msvh128x2zt)
+
+See the other controls available in the **[Windows Community Toolkit Gallery app](https://apps.microsoft.com/detail/9nblggh4tlcq)** or try them with the gallery app [in your browser](https://toolkitlabs.dev/).
+
+## Requirements
+
+| Device family | Universal, 10.0.16299.0 or higher |
+| -- | -- |
+| Namespace | Microsoft.Toolkit.Uwp.UI.Controls |
+| NuGet package | [Microsoft.Toolkit.Uwp.UI.Controls.DataGrid](https://www.nuget.org/packages/Microsoft.Toolkit.Uwp.UI.Controls.DataGrid/) |
+
+## API
+
+* [DataGrid source code](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.UI.Controls.DataGrid/DataGrid)
+* [Silverlight DataGrid API](/previous-versions/windows/silverlight/dotnet-windows-silverlight/cc189753(v=vs.95))
diff --git a/docs/archive/windows/deeplinkparsers.md b/docs/archive/windows/deeplinkparsers.md
new file mode 100644
index 00000000..bce4965a
--- /dev/null
+++ b/docs/archive/windows/deeplinkparsers.md
@@ -0,0 +1,163 @@
+---
+title: DeepLinkParser
+author: nmetulev
+description: Provides a way to create, Dictionary - inheriting object that provides an additional .Root property to pull the base path of the URI
+keywords: windows 10, uwp, windows community toolkit, uwp community toolkit, uwp toolkit, DeepLinkParser
+dev_langs:
+ - csharp
+ - vb
+---
+
+# DeepLinkParser (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+While there are no immediate plans to port this component to 8.x, the community is welcome to express interest or contribute to its inclusion.
+
+For more information:
+- [Community Toolkit GitHub repository](https://github.com/CommunityToolkit/Windows)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+The [DeepLinkParser Class](/dotnet/api/microsoft.toolkit.uwp.helpers.deeplinkparser) provides a way to create, from `IActivatedEventArgs` a `Dictionary`-inheriting object that provides an additional `.Root` property to pull the base path of the URI (eg: in `MainPage/Options?option1=value1`, `.Root` would be `MainPage/Options`.
+Once you have an instance, simply saying `instance["optionName"]` will pull the value from the querystring for that option.
+
+## Properties
+
+| Property | Type | Description |
+| -- | -- | -- |
+| Root | string | Gets or sets the root path of the Deep link URI |
+
+## Methods
+
+| Methods | Return Type | Description |
+| -- | -- | -- |
+| Create(String) | DeepLinkParser | Creates an instance of `DeepLinkParser` for the given `string` |
+| Create(Uri) | DeepLinkParser | Creates an instance of DeepLinkParser for the given Uri |
+| Create(IActivatedEventArgs) | DeepLinkParser | Creates an instance of DeepLinkParser for the given [IActivatedEventArgs](/uwp/api/Windows.ApplicationModel.Activation.IActivatedEventArgs) |
+| ValidateSourceUri(String) | Uri | Validates the source URI |
+
+### Example
+
+In OnLaunched of App.xaml.cs:
+
+```csharp
+if (e.PrelaunchActivated == false)
+{
+ if (rootFrame.Content == null)
+ {
+ var parser = DeepLinkParser.Create(args);
+ if (parser["username"] == "John Doe")
+ {
+ // do work here
+ }
+ if (parser.Root == "Signup")
+ {
+ rootFrame.Navigate(typeof(Signup));
+ }
+...
+```
+
+```vb
+If e.PrelaunchActivated = False Then
+ If rootFrame.Content Is Nothing Then
+ Dim parser = DeepLinkParser.Create(args)
+ If parser("username") = "John Doe" Then
+ ' do work here
+ End If
+
+ If parser.Root = "Signup" Then
+ rootFrame.Navigate(GetType(Signup))
+ End If
+...
+```
+
+## CollectionFormingDeepLinkParser
+
+The [CollectionFormingDeepLinkParser Class](/dotnet/api/microsoft.toolkit.uwp.helpers.collectionformingdeeplinkparser) will to be able to do something like `?pref=this&pref=that&pref=theOther` and have a pull of `pref` come back with `this,that,theOther` as its value. This derivative of `DeepLinkParser` provides this functionality.
+
+### Example
+
+in OnLaunched of App.xaml.cs:
+
+```csharp
+if (e.PrelaunchActivated == false)
+{
+ if (rootFrame.Content == null)
+ {
+ var parser = CollectionFormingDeepLinkParser.Create(args);
+ if (parser["username"] == "John Doe")
+ {
+ // do work here
+ }
+ if (parser.Root == "Signup")
+ {
+ var preferences = parser["pref"].Split(','); // now a string[] of all 'pref' querystring values passed in URI
+ rootFrame.Navigate(typeof(Signup));
+ }
+...
+```
+
+```vb
+If e.PrelaunchActivated = False Then
+ If rootFrame.Content Is Nothing Then
+ Dim parser = CollectionFormingDeepLinkParser.Create(args)
+ If parser("username") = "John Doe" Then
+ ' do work here
+ End If
+
+ If parser.Root = "Signup" Then
+ Dim preferences = parser("pref").Split(","c) ' now a string[] of all 'pref' querystring values passed in URI
+ rootFrame.Navigate(GetType(Signup))
+ End If
+...
+```
+
+Both of these are createable using a `.Create(IActivatedEventArgs)` method. Should you wish to create one in a different manner, the default constructor is `protected` so inheriting from either of these can provide extensibility.
+The method that does the heavy lifting of parsing in to the `Dictionary` (`ParseUriString`) is also `protected` and `virtual` so can be used/overridden by any inheriting class.
+
+## QueryParameterCollection
+
+The [QueryParameterCollection](/dotnet/api/microsoft.toolkit.uwp.helpers.queryparametercollection) helper class aids in the creation of a `Collection>` populated with they key-value pairs of all parameters in a query string.
+
+### Example
+
+```csharp
+var myUrl = "https://microsoft.com/?user=fooUser&email=fooUser@outlook.com&firstName=John&lastName=Doe"
+var paramCollection = new QueryParameterCollection(myUrl);
+foreach (var pair in paramCollection)
+{
+ Console.WriteLine($"{pair.Key} - {pair.Value}");
+}
+```
+
+```vb
+Dim myUrl = "https://microsoft.com/?user=fooUser&email=fooUser@outlook.com&firstName=John&lastName=Doe"
+Dim paramCollection = New QueryParameterCollection(myUrl)
+For Each pair In paramCollection
+ Console.WriteLine($"{pair.Key} - {pair.Value}")
+Next
+```
+
+### Output
+
+```
+user - fooUser
+email - fooUser@outlook.com
+firstname - John
+lastName - Doe
+```
+
+### Requirements
+
+| Device family | Universal, 10.0.16299.0 or higher |
+| --- | --- |
+| Namespace | Microsoft.Toolkit.Uwp |
+| NuGet package | [Microsoft.Toolkit.Uwp](https://www.nuget.org/packages/Microsoft.Toolkit.Uwp/) |
+
+### API
+
+* [DeepLinkParser source code](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp/Helpers/DeepLinkParser)
diff --git a/docs/archive/windows/eyedropper.md b/docs/archive/windows/eyedropper.md
new file mode 100644
index 00000000..36d82479
--- /dev/null
+++ b/docs/archive/windows/eyedropper.md
@@ -0,0 +1,137 @@
+---
+title: Eyedropper
+author: HHChaos
+description: The Eyedropper Control can pick up a color from anywhere in your application.
+keywords: windows 10, uwp, windows community toolkit, uwp community toolkit, uwp toolkit, Eyedropper, xaml Control, xaml
+dev_langs:
+ - csharp
+ - vb
+---
+
+# Eyedropper (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+While there are no immediate plans to port this component to 8.x, the community is welcome to express interest or contribute to its inclusion.
+
+For more information:
+- [GitHub tracking issue for Eyedropper port](https://github.com/CommunityToolkit/Windows/issues/51)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+The [Eyedropper](/dotnet/api/microsoft.toolkit.uwp.ui.controls.eyedropper) control can pick up a color from anywhere in your application.
+
+> [!NOTE]
+> The Eyedropper Control uses [RenderTargetBitmap](/uwp/api/windows.ui.xaml.media.imaging.rendertargetbitmap) to get a screenshot of your app. In some cases, RenderTargetBitmap may render incorrectly, which will cause eyedropper not to get the correct color value. Please make sure your xaml layout is reasonable, see [here](/uwp/api/windows.ui.xaml.media.imaging.rendertargetbitmap#xaml-visuals-and-rendertargetbitmap-capture-capabilities) for details.
+
+> [!div class="nextstepaction"]
+> [Try it in the sample app](uwpct://Controls?sample=Eyedropper)
+
+## Syntax
+
+Use EyedropperToolButton in xaml.
+
+```xaml
+
+
+
+```
+
+Or use the global Eyedropper in code.
+
+```csharp
+var eyedropper = new Eyedropper();
+var color = await eyedropper.Open();
+```
+
+```vb
+Dim eyedropper = New Eyedropper()
+Dim color = Await eyedropper.Open()
+```
+
+## Sample Output
+
+
+
+## Properties
+
+### Eyedropper Properties
+
+| Property | Type | Description |
+| -------- | ----------- | ------------------------------------------------ |
+| Color | Color | Gets the current color value. |
+| Preview | ImageSource | Gets the enlarged pixelated preview image. |
+| WorkArea | Rect | Gets or sets the working area of the eyedropper. |
+
+### EyedropperToolButton Properties
+
+| Property | Type | Description |
+| ----------------- | ---------------- | ------------------------------------------------------------ |
+| Color | Color | Gets the current color value. |
+| EyedropperEnabled | bool | Gets or sets a value indicating whether eyedropper is opened. |
+| EyedropperStyle | Style | Gets or sets a value for the style to use for the eyedropper. |
+| TargetElement | FrameworkElement | Gets or sets the working target element of the eyedropper. |
+
+## Methods
+
+### Eyedropper Methods
+
+| Methods | Return Type | Description |
+| -------------- | ----------- | --------------------- |
+| Open([Point?]) | Task\ | Open the eyedropper. |
+| Close() | void | Close the eyedropper. |
+
+## Events
+
+### Eyedropper Events
+
+| Events | Description |
+| ------------- | ------------------------------------------------ |
+| ColorChanged | Occurs when the Color property has changed. |
+| PickStarted | Occurs when the eyedropper begins to take color. |
+| PickCompleted | Occurs when the eyedropper stops to take color. |
+
+### EyedropperToolButton Events
+
+| Events | Description |
+| ------------- | ------------------------------------------------ |
+| ColorChanged | Occurs when the Color property has changed. |
+| PickStarted | Occurs when the eyedropper begins to take color. |
+| PickCompleted | Occurs when the eyedropper stops to take color. |
+
+## Examples
+
+- Use the global Eyedropper in code.
+
+```csharp
+var eyedropper = new Eyedropper();
+var color = await eyedropper.Open();
+```
+
+```vb
+Dim eyedropper = New Eyedropper()
+Dim color = Await eyedropper.Open()
+```
+
+## Sample Project
+
+[Eyedropper Sample Page Source](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/Eyedropper). You can [see this in action](uwpct://Controls?sample=Eyedropper) in the [Windows Community Toolkit Sample App](https://aka.ms/windowstoolkitapp).
+
+## Default Template
+
+[Eyedropper XAML File](https://github.com/windows-toolkit/WindowsCommunityToolkit/blob/rel/7.1.0/Microsoft.Toolkit.Uwp.UI.Controls.Media/Eyedropper/Eyedropper.xaml) is the XAML template used in the toolkit for the default styling.
+
+## Requirements
+
+| Device family | Universal, 10.0.16299.0 or higher |
+| ------------- | ------------------------------------------------------------ |
+| Namespace | Microsoft.Toolkit.Uwp.UI.Controls |
+| NuGet package | [Microsoft.Toolkit.Uwp.UI.Controls](https://www.nuget.org/packages/Microsoft.Toolkit.Uwp.UI.Controls/) |
+
+## API
+
+- [Eyedropper source code](https://github.com/windows-toolkit/WindowsCommunityToolkit/tree/rel/7.1.0/Microsoft.Toolkit.Uwp.UI.Controls.Media/Eyedropper)
diff --git a/docs/archive/windows/facebook.md b/docs/archive/windows/facebook.md
new file mode 100644
index 00000000..b17c4697
--- /dev/null
+++ b/docs/archive/windows/facebook.md
@@ -0,0 +1,309 @@
+---
+title: Facebook Service
+author: nmetulev
+description: The Facebook Service allows you to retrieve or publish data to the Facebook graph. Examples of the types of objects you can work with are Posts, Tagged Objects, and the primary user feed (outdated docs).
+keywords: windows 10, uwp, windows community toolkit, uwp community toolkit, uwp toolkit, Facebook Service
+dev_langs:
+ - csharp
+ - vb
+---
+
+# Facebook (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+The community is welcome to express interest or contribute to its inclusion, although we want to note that:
+- We aren't open to porting this component to 8.x.
+- There is no known recommended substitute for this component.
+
+For more information:
+- [Community Toolkit GitHub repository](https://github.com/CommunityToolkit/Windows)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+> [!WARNING]
+> The Facebook Service is no longer available in the Windows Community Toolkit. The underlying dependent library was no longer maintained.
+
+The Facebook Service allows you to retrieve or publish data to the Facebook graph. Examples of the types of objects you can work with are Posts, Tagged Objects, and the primary user feed.
+
+> [!div class="nextstepaction"]
+> [Try it in the sample app](uwpct://Services?sample=Facebook%20Service)
+
+## Getting Windows Store SID
+
+The Windows Store SID is a unique value per application generated, and it not tied to the actual store publication. Creating a local application will give you a valid SID that you can use for debugging against Facebook.
+
+```csharp
+// Put the following code in your mainform loaded event
+// Note that this will not work in the App.xaml.cs Loaded
+#if DEBUG
+ System.Diagnostics.Debug.WriteLine("Windows Store SID = " + Microsoft.Toolkit.Uwp.Services.Facebook.FacebookService.Instance.WindowsStoreId);
+#endif
+```
+
+```vb
+' Put the following code in your mainform loaded event
+' Note that this will not work in the App.xaml.cs Loaded
+#If DEBUG Then
+ System.Diagnostics.Debug.WriteLine("Windows Store SID = " & Microsoft.Toolkit.Uwp.Services.Facebook.FacebookService.Instance.WindowsStoreId)
+#End If
+```
+
+> [!NOTE]
+> You may have to turn on the Output window in Visual Studio to see this debug writeline.
+
+The above code will output something like this:
+
+```
+Windows Store SID = ms-app://s-1-15-2-12341451-1486691014-2395677208-123421631-1234998043-1234490472-123452499/
+```
+
+When entering the value into the Facebook Developer site you must strip the ms-app:// and the trailing / off the string.
+
+## Creating a new Application on Facebook Developer Site
+
+1. To get a **Facebook.WindowsStoreID**, go to: .
+2. Select **Create a New App ID**, to start integration Facebook into your app or website.
+3. Click, **Create a New App**
+4. From the app Dashboard choose the **Settings** item on the left. It should select the *Basic* item under it by default.
+5. **+Add Platform** choose Windows App. Leave the *Namespace* and *App Domains* entries blank.
+6. Enter the **Windows Store SID** from within your app (see *Getting Windows Store SID* section)
+7. From left side menu choose **+Add Product** Click to add *Facebook Login*. Ensure you set the following options in the UI:
+
+| Setting | Value |
+|----------|------:|
+| Client OAuth Login | Yes |
+| Web OAuth Login | No |
+| Embedded Browser OAuth Login | Yes |
+| Force Web OAuth Redirection | No |
+| Login from Devices | No |
+| Valid OAuth redirect URIs | Blank |
+
+## Syntax
+
+```csharp
+// Initialize service
+FacebookService.Instance.Initialize(AppIDText.Text);
+
+// Login to Facebook
+if (!await FacebookService.Instance.LoginAsync())
+{
+ return;
+}
+
+// Get user's feed
+ListView.ItemsSource = await FacebookService.Instance.RequestAsync(FacebookDataConfig.MyFeed, 50);
+
+// Get current user profile picture
+ProfileImage.DataContext = await FacebookService.Instance.GetUserPictureInfoAsync();
+
+// Post a message on your wall using Facebook Dialog
+await FacebookService.Instance.PostToFeedWithDialogAsync(TitleText.Text, DescriptionText.Text, UrlText.Text);
+
+// Get current user's photo albums
+await FacebookService.Instance.GetUserAlbumsAsync();
+
+// Get current user's photos by album Id
+await FacebookService.Instance.GetUserPhotosByAlbumIdAsync(addedItem.Id);
+```
+
+```vb
+' Initialize service
+FacebookService.Instance.Initialize(AppIDText.Text)
+
+' Login to Facebook
+If Not Await FacebookService.Instance.LoginAsync() Then
+ Return
+End If
+
+' Get user's feed
+ListView.ItemsSource = Await FacebookService.Instance.RequestAsync(FacebookDataConfig.MyFeed, 50)
+
+' Get current user profile picture
+ProfileImage.DataContext = Await FacebookService.Instance.GetUserPictureInfoAsync()
+
+' Post a message on your wall using Facebook Dialog
+Await FacebookService.Instance.PostToFeedWithDialogAsync(TitleText.Text, DescriptionText.Text, UrlText.Text)
+
+' Get current user's photo albums
+Await FacebookService.Instance.GetUserAlbumsAsync()
+
+' Get current user's photos by album Id
+Await FacebookService.Instance.GetUserPhotosByAlbumIdAsync(addedItem.Id)
+```
+
+## FacebookAlbum Class
+
+FacebookAlbum has properties to hold album details
+
+### Properties
+
+| Property | Type | Description |
+| -- | -- | -- |
+| Cover_Photo | FacebookPhoto | Gets or sets cover_photo property |
+| Description | string | Gets or sets description property |
+| Id | string | Gets or sets id property |
+| Name | string | Gets or sets name property |
+| Picture | FacebookPictureData | Gets or sets picture property |
+
+## FacebookDataConfig Class
+
+Configuration object for specifying richer query information
+
+### Fields
+
+| Field | Type | Description |
+| -- | -- | -- |
+| MyFeed | FacebookDataConfig | Gets a predefined config to get user feed. The feed of posts (including status updates) and links published by this person, or by others on this person's profile |
+| MyPosts | FacebookDataConfig | Gets a predefined config to show only the posts that were published by this person |
+| MyTagged | FacebookDataConfig | Gets a predefined config to show only the posts that this person was tagged in |
+
+### Properties
+
+| Property | Type | Description |
+| -- | -- | -- |
+| Query | string | Gets or sets the query string for filtering service results |
+
+## FacebookOAuthTokens Class
+
+Facebook OAuth tokens
+
+### Properties
+
+| Property | Type | Description |
+| -- | -- | -- |
+| AppId | string | Gets or sets facebook AppId |
+| WindowsStoreId | string | Gets or sets Windows Store ID |
+
+## FacebookPhoto Class
+
+FacebookAlbum has properties to hold photo details
+
+### Properties
+
+| Property | Type | Description |
+| -- | -- | -- |
+| Album | int | Gets or sets album property |
+| Created_Time | int | Gets or sets time the entity instance was created |
+| Id | string | Gets or sets id property |
+| Images | int | Gets or sets images property |
+| Link | string | Gets or sets a link to the entity instance |
+| Name | string | Gets or sets name property |
+| Picture | string | Gets or sets picture property |
+
+## FacebookPicture Class
+
+Class for presenting picture data returned from service provider
+
+### Properties
+
+| Property | Type | Description |
+| -- | -- | -- |
+| Id | string | Gets or sets the ID of the picture |
+| Is_Silhouette | bool | Gets or sets a value indicating whether the picture is a silhouette or not |
+| Link | string | Gets or sets the url of the page with the picture |
+| Url | string | Gets or sets an url to the picture |
+
+## FacebookPictureData Class
+
+Holds picture data
+
+### Properties
+
+| Property | Type | Description |
+| -- | -- | -- |
+| Data | FacebookPicture | Gets or sets data property |
+
+## FacebookPlatformImageSource Class
+
+Holds image details
+
+### Properties
+
+| Property | Type | Description |
+| -- | -- | -- |
+| Height | string | Gets or sets height property |
+| Source | string | Gets or sets source property |
+| Width | string | Gets or sets width property |
+
+## FacebookPost Class
+
+Holds facebook post data
+
+### Properties
+
+| Property | Type | Description |
+| -- | -- | -- |
+| Id | string | Gets or sets id property |
+| Message | string | Gets or sets message or post text |
+| Created_Time | DateTime | Gets or sets time the entity instance was created |
+| Link | string | Gets or sets a link to the entity instance |
+| Full_Picture | string | Gets or sets a link to the accompanying image |
+
+## FacebookRequestSource\ Class
+
+Type to handle paged requests to Facebook Graph
+
+### Constructor
+
+| Constructor | Description |
+| -- | -- |
+| FacebookRequestSource(FacebookDataConfig, string, string, int) | Initializes a new instance of the `FacebookRequestSource` class |
+
+### Methods
+
+| Methods | Return Type | Description |
+| -- | -- | -- |
+| GetPagedItemsAsync(int, int, CancellationToken) | Task\> | Returns strong typed page of data |
+
+## FacebookService Class
+
+Class for connecting to Facebook
+
+### Properties
+
+| Property | Type | Description |
+| -- | -- | -- |
+| WindowsStoreId | string | Gets a Windows Store ID associated with the current app |
+| Instance | FacebookService | Gets public singleton property |
+| LoggedUser | string | Gets the current logged user name |
+| Provider | FBSession | Gets a reference to an instance of the underlying data provider |
+| B | int | Description |
+| B | int | Description |
+
+### Methods
+
+| Methods | Return Type | Description |
+|-------------------------------------------------------|-----------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|
+| Initialize(FacebookOAuthTokens, FacebookPermissions) | bool | Initialize underlying provider with relevant token information |
+| LoginAsync() | Task\ | Login with set of required requiredPermissions |
+| LogoutAsync() | Task | Log out of the underlying service instance |
+| RequestAsync(FacebookDataConfig, int) | Task> | Request list data from service provider based upon a given config / query |
+| RequestAsync\(FacebookDataConfig, int, string) | Task> | Request list data from service provider based upon a given config / query |
+| RequestAsync(FacebookDataConfig, int, int) | Task, FacebookPost>> | Request list data from service provider based upon a given config / query |
+| RequestAsync\(FacebookDataConfig, int, int, string) | Task, T>> | Request generic list data from service provider based upon a given config / query |
+| GetUserPictureInfoAsync() | Task\ | Returns the `FacebookPicture` object associated with the logged user |
+| GetUserAlbumsAsync(int, string) | Task> | Retrieves list of user photo albums |
+| GetUserAlbumsAsync(int, int, string) | Task, FacebookAlbum>> | Retrieves list of user photo albums |
+| GetUserPhotosByAlbumIdAsync(string, int, string) | Task> | Retrieves list of user photos by album id |
+| GetUserPhotosByAlbumIdAsync(string, int, int, string) | Task, FacebookPhoto>> | Retrieves list of user photos by album id |
+| GetPhotoByPhotoIdAsync(string) | Task\ | Retrieves a photo by id |
+| PostToFeedWithDialogAsync(string) | Task\ | Enables posting data to the timeline using Facebook dialog |
+
+## Sample Project
+
+[Facebook Service Sample Page Source](https://github.com/CommunityToolkit/WindowsCommunityToolkit/tree/rel/6.1.0/Microsoft.Toolkit.Uwp.SampleApp/SamplePages/Facebook%20Service). You can [see this in action](uwpct://Services?sample=Facebook%20Service) in the [Windows Community Toolkit Sample App](https://aka.ms/windowstoolkitapp).
+
+## Requirements
+
+| Device family | Universal, 10.0.16299.0 or higher |
+| --- | --- |
+| Namespace | Microsoft.Toolkit.Uwp.Services |
+| NuGet package | [Microsoft.Toolkit.Uwp.Services](https://www.nuget.org/packages/Microsoft.Toolkit.Uwp.Services/) |
+
+## API
+
+* [Facebook Service source code](https://github.com/CommunityToolkit/WindowsCommunityToolkit/tree/rel/6.1.0/Microsoft.Toolkit.Uwp.Services/Services/Facebook)
diff --git a/docs/archive/windows/gazeinteractionlibrary.md b/docs/archive/windows/gazeinteractionlibrary.md
new file mode 100644
index 00000000..22e81be6
--- /dev/null
+++ b/docs/archive/windows/gazeinteractionlibrary.md
@@ -0,0 +1,224 @@
+---
+title: Gaze Interaction Library
+author: harishsk
+description: The Gaze Interaction library contains a set of helper classes built on the Windows gaze input APIs to more easily leverage eye tracking and integrate gaze interactions into your UWP application.
+keywords: windows 10, uwp, uwp community toolkit, uwp toolkit, windows community toolkit, gaze, eye gaze, gaze input, gaze interaction, eye tracking, eye tracker
+---
+
+# GazeInteractionLibrary (Archived)
+
+**Important Note:** This document has been archived and the component is not available in the current version of the Windows Community Toolkit.
+
+While there are no immediate plans to port this component to 8.x, the community is welcome to express interest or contribute to its inclusion.
+
+For more information:
+- [Community Toolkit GitHub repository](https://github.com/CommunityToolkit/Windows)
+- [Documentation feedback and suggestions](https://github.com/MicrosoftDocs/CommunityToolkit/issues)
+
+Original documentation follows below.
+
+---
+
+Microsoft announced native support for eye tracking in Windows in the [Windows 10 Fall Creators Update](https://blogs.msdn.microsoft.com/accessibility/2017/08/01/from-hack-to-product-microsoft-empowers-people-with-eye-control-for-windows-10/). In the Windows 10 April 2018 update, Microsoft added developer support by releasing [Windows Gaze Input APIs](/uwp/api/windows.devices.input.preview) to build UWP applications that can interact with gaze input and eye trackers.
+
+This Gaze Interaction Library is built on top of the Windows Gaze Input APIs and provides a set of developer helper classes to more easily enable UWP applications to respond to where the user is looking on the screen. This library is intended to abstract away some of the complexities of dealing with the raw stream of gaze input coming from the eye tracking device exposed through the Windows APIs.
+
+> [!div class="nextstepaction"]
+> [Try it in the sample app](uwpct://Gaze?sample=GazeInteraction)
+
+## Prerequisites
+
+In order to use the Windows 10 Gaze Input APIs or this Gaze Interaction Library, you need to have the following:
+
+* A device with the Windows 10 April 2018 Update
+* A [supported eye tracker](https://support.microsoft.com/help/4043921/windows-10-get-started-eye-control#supported-devices), like the [Tobii EyeX 4C](https://tobiigaming.com/products/)
+
+To use the gaze input APIs, you must register the gazeInput capability in the app manifest. Add the following DeviceCapability to the Capabilities node in the Package.appxmanifest file of your project (you can do this by checking Gaze Input in the Capabilities tab in Visual Studio when you have Package.appxmanifest open in the App Manifest Designer):
+
+```xaml
+
+
+
+```
+
+## Supported Features
+
+The Gaze Interaction Library currently supports the following features:
+
+* Dwell based activation of XAML button and toggle button controls
+* Enabling gaze interactions for the entire XAML page or for a portion of it (like a single control)
+* Customizing the dwell times associated with specific controls
+* Controlling repetition of the dwell invocation of controls
+
+## Gaze Concepts
+
+Below are a few eye gaze related concepts that are helpful in order to better understand the rest of the document:
+
+* **Saccade.** A saccade is a rapid movement of the eyes from one fixation point to another. Our eyes alternate between fixations and saccades.
+* **Fixation.** A fixation is the collection of gaze points on a single location of the screen for a relatively short amount of time (roughly around 200ms). This happens after a saccade when the eye comes to rest upon an object and it comes into sharp focus.
+* **Dwell.** A dwell is the conscious fixation by the user for a duration greater than the fixation time. This mechanism is typically used to identify user intent when the user is using only their eyes as an input method. The dwell time duration can be application and control dependent.
+* **Enter/Exit.** These are states and properties specific to this API to help manage gaze related interactions and refer to the time elapsed since the first recorded gaze sample and the last recorded gaze sample on a particular control (Button, ToggleButton etc.)
+
+The Gaze Interaction Library enables dwell based gaze interactions on the page by reading the data from the eye tracker over the page invoking specific controls when the user's gaze dwells on a control for a specific time. The application can configure this time based on its usage scenario.
+
+## PointerState Properties
+
+The Windows Gaze Input APIs delivers a stream of timestamped gaze point coordinates of the user's gaze location on the screen. This library aggregates these samples over each control and converts the stream into gaze events. Corresponding to these events, are the following states:
+
+| Property | Type | Description |
+| -- | -- | -- |
+|Enter | enum | A user's gaze has entered the control |
+|Fixation | enum | A user eye's are focused on the control. |
+|Dwell | enum | A user is consciously dwelling on the control and has exceeded the dwell time. This is interpreted as the user's intent to activate or invoke the control, e.g. click a button|
+|Exit | enum | A user's gaze is no longer within the control|
+
+## GazeInput Properties
+
+If the XAML page is enabled for gaze based interactions, the visibility and size of the gaze cursor, and the timings associated with the states above can be configured using the properties below:
+
+| Property | Type | Description |
+| -- | -- | -- |
+| IsDeviceAvailable | bool | Returns whether a compatible eye tracker is connected. When this property changes an `IsDeviceAvailableChanged` event is fired. |
+| Interaction | enum | Gets or sets the status of gaze interaction over that particular XAML element. There are three options:
**Enabled.** Gaze interaction is enabled on this element and all its children
**Disabled** Gaze interaction is disabled on this element and all its children
**Inherited** Gaze interaction status is inherited from the nearest ancestor
|
+| CursorVisible | bool | The gaze cursor shows where the user is looking at on the screen. This boolean property shows the gaze cursor when set to `true` and hides it when set to `false`. The default value is `false`|
+|CursorRadius|int| Gets or sets the size of the gaze cursor radius. The default value is X|
+| ThresholdDuration | TimeSpan | This duration controls when the PointerState moves to either the `Enter` state or the `Exit` state. When this duration has elapsed after the user's gaze first enters a control, the `PointerState` is set to `Enter`. And when this duration has elapsed after the user's gaze has left the control, the `PointerState` is set to `Exit`. In both cases, a `StateChanged` event is fired. The default value is 50ms. |
+| FixationDuration | TimeSpan | Gets or sets the duration for the control to transition from the `Enter` state to the `Fixation` state. At this point, a `StateChanged` event is fired with `PointerState` set to `Fixation`. This event should be used to control the earliest visual feedback the application needs to provide to the user about the gaze location. The default value is 350ms. |
+| DwellDuration | TimeSpan | Gets or sets the duration for the control to transition from the `Fixation` state to the `Dwell` state. At this point, a `StateChanged` event is fired with `PointerState` set to `Dwell`. The `Enter` and `Fixation` states are typically achieved too rapidly for the user to have much control over. In contrast `Dwell` is a more conscious activity. This is the point at which the control is invoked, e.g. a button click. The application can modify this property to control when a gaze enabled UI element gets invoked after a user starts looking at it. The default value is 400 ms. |
+| MaxDwellRepeatCount | int | The maximum amount of times the control will invoked repeatedly without the user's gaze having to leave and re-enter the control. The default value is zero which disables repeated invocation of a control. Developers can set a higher value to enable repeated invocation. |
+| DwellRepeatDuration | TimeSpan | Gets or sets the duration of repeated dwell invocations, should the user continue to dwell on the control. The first repeat will occur after an additional delay specified by `RepeatDelayDuration`. Subsequent repeats happen after every period of `DwellRepeatDuration`. _A control is invoked repeatedly only if MaxDwellRepeatCount is set to greater than zero_. |
+| RepeatDelayDuration | TimeSpan | Gets or sets the additional duration for the first repeat to occur. This prevents inadvertent repeated invocation. See above for details. |
+| IsSwitchEnabled | bool | Gets or sets whether switch activation is enabled. When Switch support is enabled, the currently fixated element will not transition to the dwell state. Further, when the `GazePointer.Click()` method is called the currently fixated element will be invoked. |
+
+## GazeElement Events
+
+Add description here.
+
+| Events | Description |
+| -- | -- |
+| StateChanged | This event is raised in response to each of the states associated with `PointerState` (except for the `DwellRepeat` state). An application can add a handler for this event to customize gaze related processing with respect to the various gaze pointer states mentioned above.|
+|DwellProgressFeedback| This event is fired to indicate progress towards a dwell event. An application can handle this event to either customize visual feedback and/or turn off the default animation for dwell by setting `DwellProgressEventArgs.Handled` to `true`|
+|Invoked|This event is fired when the library is about to invoke the control in response to a dwell event. An application can handle this even to perform custom processing before invocation, and/or suppress invocation by setting the `DwellInvokedRoutedEventArgs.Handled` to `true`|
+
+## StateChangedEventArgs Properties
+
+This parameter is passed to the `StateChanged` event which is fired when the `PointerState` changes.
+
+| Property | Type | Description |
+| -- | -- | -- |
+|PointerState|GazePointerState|The `GazePointerState` associated with this event|
+|ElapsedTime|TimeSpan|The time the user has spent looking at the control to reach the specific pointer state above|
+
+## DwellProgressEventArgs Properties
+
+This parameter is passed to the event handling the `DwellProgressFeedback` event.
+
+| Property | Type | Description |
+| -- | -- | -- |
+|State|enum|This enum indicates the state of the control towards dwell in three values `Idle`, `Progressing` and `Complete`|
+|Progress|double|A value between 0 and 1 that indicates the fractional progress towards completing dwell|
+|Handled|bool|If an application sets this value to `true` the default animation provided by the library is suppressed|
+
+## DwellInvokedRoutedEventArgs Properties
+
+This parameter is passed to the GazeElement::Invoked event and allows the application to prevent default invocation when the user dwells on a control.
+
+| Property | Type | Description |
+| -- | -- | -- |
+| Handled | bool | This parameter is passed to the `GazeElement.Invoked` event. If set to `true` the library will suppress invoking the control on a dwell event|
+
+## Examples
+
+### To enable gaze interactions on the entire XAML page
+
+Add the following lines to your Page element to enable gaze interaction on the entire page.
+
+```xaml
+ xmlns:gaze="using:Microsoft.Toolkit.Uwp.Input.GazeInteraction"
+ gaze:GazeInput.Interaction="Enabled"
+```
+
+For e.g.
+
+```xaml
+
+```
+
+### To enable gaze interactions on a portion of the page
+
+Gaze interaction can also be enabled only on a portion of the page by adding the same attributes to any XAML element on the page.
+
+To enable only a subset of the page, e.g. just one Grid on the page:
+
+```xaml
+
+
+
+```
+
+In the above example, the button will be clicked when the user looks at the button in the grid for a period equal to the default dwell time.
+
+### To change the dwell time for a control
+
+The code below sets the Dwell time duration for the button to be 500ms. This means the button will be clicked 500ms after the control enters the Fixation state.
+(See [PointerState](#pointerstate-properties) for details)
+
+```xaml
+