Попытка определить, какой элемент отображается в списке - PullRequest
0 голосов
/ 04 февраля 2020

Я создал файл .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>

Я надеюсь, что это имеет смысл, и я благодарю вас за то, что вы нашли время взглянуть на мою проблему.

1 Ответ

0 голосов
/ 05 февраля 2020

По предложению @ TheMadTechnician я решил повторить попытку, используя ComboBox вместо ListBox, который начал работать. Я не уверен в деталях, объясняющих почему, но это то, что я сделал.

Это код, который я использовал в итоге.

<ComboBox Name="comboBox" HorizontalAlignment="Left" Margin="142,330,0,0" VerticalAlignment="Top" Width="217" Height="40" FontSize="24" SelectedIndex="1">
    <ListBoxItem Name="ListBoxItem1" Content="Immediately" FontSize="24" VerticalAlignment="Center"/>
    <ListBoxItem Name="ListBoxItem2" Content="1 Hour" FontSize="24" VerticalAlignment="Center"/>
    <ListBoxItem Name="ListBoxItem3" Content="2 Hours" FontSize="24" VerticalAlignment="Center"/>
    <ListBoxItem Name="ListBoxItem4" Content="3 Hours" FontSize="24" VerticalAlignment="Center"/>
</ComboBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...