mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2026-08-09 09:31:15 +10:00
* Use shared progress for app workflows * Remove legacy install progress overlay * Document shared app progress indicator * Address progress review feedback * Track all Win11 ISO progress * Restore Win11 Creator work on relaunch
47 lines
2.4 KiB
PowerShell
47 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 should 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
|
|
$Border.Child = $scrollViewer
|
|
|
|
## 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'
|
|
$scrollViewer.Content = $itemsControl
|
|
|
|
# Use WrapPanel to create dynamic columns based on AppEntryWidth and window width
|
|
$itemsPanelTemplate = New-Object Windows.Controls.ItemsPanelTemplate
|
|
$factory = New-Object Windows.FrameworkElementFactory ([Windows.Controls.WrapPanel])
|
|
$factory.SetValue([Windows.Controls.WrapPanel]::OrientationProperty, [Windows.Controls.Orientation]::Horizontal)
|
|
$factory.SetValue([Windows.Controls.WrapPanel]::HorizontalAlignmentProperty, [Windows.HorizontalAlignment]::Left)
|
|
$itemsPanelTemplate.VisualTree = $factory
|
|
$itemsControl.ItemsPanel = $itemsPanelTemplate
|
|
|
|
# Add the Border containing the App Area to the target Grid
|
|
$targetGrid.Children.Add($Border) | Out-Null
|
|
|
|
return $itemsControl
|
|
}
|