Я создал файл .xaml с помощью Visual Studio для использования в Powershell. цель скрипта, который я пытаюсь создать, предназначена для всплывающих окон для пользователя, чтобы они выбрали 1 из предоставленных вариантов и нажали кнопку. Затем он запланирует перезагрузку в зависимости от времени, выбранного в списке. У меня они несколько работают, но проблема в том, что при нажатии на кнопку он продолжает возвращать одно и то же значение, несмотря на изменение значений в списке.
Я управлял этим в ISE Powershell. Write-Host $listBox.SelectedIndex
и Write-Host $listBox.SelectedItem
возвращают System.Windows.Controls.ListBoxItem: 3 Hours
и System.Windows.Controls.ListBox Items.Count:4
снова, несмотря на то, что список меняет значения между щелчками.
Я хорошо знаю PowerShell, но xaml, я новенький с
Код Powershell
Add-Type -AssemblyName PresentationFramework
#gets the xaml information from the app.xaml, its the design of the window
[XML]$form = Get-Content "$PSScriptRoot\app.xaml"
$NR = (New-Object System.Xml.XmlNodeReader $form)
$win = [Windows.Markup.XamlReader]::Load( $NR )
function execute-restart{
[CmdletBinding()]
Param(
[Parameter(Mandatory)]
[System.Object] $listBox
)
Write-Host $listBox.SelectedIndex
Write-Host $listBox.SelectedItem
Write-Host $listBox
}
$listBox = $win.FindName('listBox')
$button = $win.FindName('restart')
#the button
$button.add_click({
execute-restart $listBox
})
$win.showdialog()
Код Xaml
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Title="Your computer needs a restart" Height="450" Width="800" Icon="C:\ITTemp\PoShGuid\wallpaper.jpg" WindowStyle="None" ResizeMode="NoResize">
<Grid>
<Image Name="image" HorizontalAlignment="Left" Height="450" Margin="0" VerticalAlignment="Top" Width="800" Source="C:\ITTemp\PoShGuid\wallpaper.jpg" Stretch="Fill"/>
<Label Name="TopLabel" Content="there is a need to restart your computer" HorizontalAlignment="Left" Margin="50,23,0,0" VerticalAlignment="Top" Height="45" Width="465" FontSize="24"/>
<Label Name="BottomLabel" Content="Please select when you would like to reschedule your pc" HorizontalAlignment="Left" Margin="50,73,0,0" VerticalAlignment="Top" Width="635" Height="44" FontSize="24"/>
<ListBox Name="listBox" HorizontalAlignment="Left" Height="40" Margin="125,330,0,0" VerticalAlignment="Top" Width="256" FontSize="24" SelectionMode="Single" IsSynchronizedWithCurrentItem="True">
<ListBoxItem Name="ListBoxItem1" Content="Immediately" FontSize="24" VerticalAlignment="Center" IsSelected="True"/>
<ListBoxItem Name="ListBoxItem2" Content="1 Hour" FontSize="24" VerticalAlignment="Center" IsSelected="True"/>
<ListBoxItem Name="ListBoxItem3" Content="2 Hours" FontSize="24" VerticalAlignment="Center" IsSelected="True"/>
<ListBoxItem Name="ListBoxItem4" Content="3 Hours" FontSize="24" VerticalAlignment="Center" IsSelected="True"/>
</ListBox>
<Button Name="restart" Content="Restart In" HorizontalAlignment="Left" Margin="407,330,0,0" VerticalAlignment="Top" Width="203" Height="40"/>
</Grid>
Я надеюсь, что это имеет смысл, и я благодарю вас за то, что вы нашли время взглянуть на мою проблему.