mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-05-24 08:17:25 -05:00

* Initial Remove Expanded View * more cleanup * Add word wrapping for Tooltips * Update tooltip colors in themes and XAML styles * Rename Properties for consistency * More Cleanup, and simplification. Also added support for screenreaders * Remove unused variables and shorten window naming * Rename Invoke-WPFUIApps to Initialize-WPFUI and update function calls for consistency * Rename Invoke-WPFUIApps.ps1 to Initialize-WPFUI.ps1 * Add TODO comments for sidebar UI generation in Initialize-WPFUI function
46 lines
2.4 KiB
PowerShell
46 lines
2.4 KiB
PowerShell
function Initialize-InstallAppArea {
|
|
<#
|
|
.SYNOPSIS
|
|
Creates a [Windows.Controls.ScrollViewer] containing a [Windows.Controls.ItemsControl] which is setup to use Virtualization to only load the visible elements for performance reasons.
|
|
This is used as the parent object for all category and app entries on the install tab
|
|
Used to as part of the Install Tab UI generation
|
|
|
|
.PARAMETER TargetElement
|
|
The element to which the AppArea shoud be added
|
|
|
|
#>
|
|
param($TargetElement)
|
|
$targetGrid = $sync.Form.FindName($TargetElement)
|
|
$null = $targetGrid.Children.Clear()
|
|
|
|
# Create the outer Border for the aren where the apps will be placed
|
|
$Border = New-Object Windows.Controls.Border
|
|
$Border.VerticalAlignment = "Stretch"
|
|
$Border.SetResourceReference([Windows.Controls.Control]::StyleProperty, "BorderStyle")
|
|
|
|
# Add a ScrollViewer, because the ItemsControl does not support scrolling by itself
|
|
$scrollViewer = New-Object Windows.Controls.ScrollViewer
|
|
$scrollViewer.VerticalScrollBarVisibility = 'Auto'
|
|
$scrollViewer.HorizontalAlignment = 'Stretch'
|
|
$scrollViewer.VerticalAlignment = 'Stretch'
|
|
$scrollViewer.CanContentScroll = $true
|
|
|
|
## Create the ItemsControl, which will be the parent of all the app entries
|
|
$itemsControl = New-Object Windows.Controls.ItemsControl
|
|
$itemsControl.HorizontalAlignment = 'Stretch'
|
|
$itemsControl.VerticalAlignment = 'Stretch'
|
|
|
|
# Enable virtualization for the ItemsControl to improve performance (It's hard to test if this is actually working, so if you know what you're doing, please check this)
|
|
$itemsPanelTemplate = New-Object Windows.Controls.ItemsPanelTemplate
|
|
$factory = New-Object Windows.FrameworkElementFactory ([Windows.Controls.VirtualizingStackPanel])
|
|
$itemsPanelTemplate.VisualTree = $factory
|
|
$itemsControl.ItemsPanel = $itemsPanelTemplate
|
|
$itemsControl.SetValue([Windows.Controls.VirtualizingStackPanel]::IsVirtualizingProperty, $true)
|
|
$itemsControl.SetValue([Windows.Controls.VirtualizingStackPanel]::VirtualizationModeProperty, [Windows.Controls.VirtualizationMode]::Recycling)
|
|
|
|
$scrollViewer.Content = $itemsControl
|
|
$Border.Child = $scrollViewer
|
|
$null = $targetGrid.Children.Add($Border)
|
|
return $itemsControl
|
|
}
|