Files
PowerToys/src/modules/cmdpal/Microsoft.CmdPal.UI/ExtViews/CleanupHelper.xaml.cs
Mike Griese cc16b61eb7 Create a Microsoft.CmdPal.Core.ViewModels project (#40560)
_targets #40504_ 

Major refactoring for #40113

This moves a large swath of the codebase to a `.Core` project. "Core"
doesn't have any explicit dependencies on "extensions", settings or the
current `MainListPage`. It's just a filterable list of stuff. This
should let us make this component a bit more reusable.

This is half of a PR. As I did this, I noticed a particular bit of code
for TopLevelVViewModels and CommandPaletteHost that was _very rough_.
Solving it in this PR would make "move everything to a new project" much
harder to review. So I'm submitting two PRs simultaneously, so we can
see the changes separately, then merge together.
2025-07-15 12:21:44 -05:00

39 lines
1.1 KiB
C#

// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Media;
namespace Microsoft.CmdPal.UI;
public static class CleanupHelper
{
public static void Cleanup(FrameworkElement element)
{
var count = VisualTreeHelper.GetChildrenCount(element);
for (var index = 0; index < count; index++)
{
var child = VisualTreeHelper.GetChild(element, index);
if (child is FrameworkElement childElement)
{
Cleanup(childElement);
}
}
switch (element)
{
case ItemsControl itemsControl:
itemsControl.ItemsSource = null;
break;
case ItemsRepeater itemsRepeater:
itemsRepeater.ItemsSource = null;
break;
case TabView tabView:
tabView.TabItemsSource = null;
break;
}
}
}