Код XAML в PowerShell ISE не работает в коде Visual Studio - PullRequest
0 голосов
/ 16 ноября 2018

Всем днем,

Прочитав в Интернете несколько руководств о PowerShell и XAML, я пытаюсь использовать Visual Studio Community для создания графического интерфейса для меня, а затем Visual Studio Code для добавления моего кода PS..

По не зависящим от меня причинам я не могу заставить VSC запустить форму, но тот же код прекрасно работает в ISE.

Я что-то упустил?Приведенный ниже не первый инструмент, над которым я начал работать - только для того, чтобы завершить откат на ISE.

Заранее спасибо - и извинения, если он выглядит невнятным!

[void][System.Reflection.Assembly]::LoadWithPartialName( 'presentationframework' )
[xml]$XAML = @'
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"


Title="Service Desk Toolbox" Height="650" Width="900" WindowStartupLocation="CenterScreen" ResizeMode="NoResize" WindowStyle="ToolWindow">
<Grid Background="#FF373737">
    <TabControl HorizontalAlignment="Left" Height="600" Margin="10,10,10,0" VerticalAlignment="Top" Width="860" Background="#FF21793B" BorderBrush="#FF21793C">
        <TabItem Header="New User">
            <TabItem.Background>
                <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                    <GradientStop Color="#FFF0F0F0" Offset="0"/>
                    <GradientStop Color="#FF21793B" Offset="1"/>
                </LinearGradientBrush>
            </TabItem.Background>
            <Grid Background="#FF21793B">
                <Label Content="Template account search" HorizontalAlignment="Left" Height="25" Margin="26,25,0,0" VerticalAlignment="Top" 
                    Width="230" FontFamily="Open Sans" FontSize="11" FontWeight="Bold"
                 />
                <TextBox Name="TemplateSearch" HorizontalAlignment="Left" Height="20" Margin="26,55,0,0" TextWrapping="Wrap" Text="Search for user" 
                    VerticalAlignment="Top" Width="200" FontSize="10" FontFamily="Open Sans"
                 />
                <Button Name="Find" Content="Find" HorizontalAlignment="Left" Height="20" Margin="246,55,0,0" VerticalAlignment="Top" 
                    Width="30" FontSize="10" FontFamily="Open Sans"
                 />
                <TextBox Name="TemplateFN" HorizontalAlignment="Left" Height="20" Margin="26,90,0,0" TextWrapping="Wrap" Text="" 
                    VerticalAlignment="Top" Width="200" FontFamily="Open Sans" FontSize="10" IsReadOnly="True"
                 />
                <TextBox Name="TemplateUPN" HorizontalAlignment="Left" Height="20" Margin="246,90,0,0" TextWrapping="Wrap" Text="" 
                    VerticalAlignment="Top" Width="30" FontFamily="Open Sans" FontSize="10" IsReadOnly="True"
                 />
                <TextBox Name="TemplateOU"  HorizontalAlignment="Left" Height="20" Margin="26,125,0,0" TextWrapping="Wrap" Text="" 
                    VerticalAlignment="Top" Width="250" FontFamily="Open Sans" FontSize="10" IsReadOnly="True"
                 />
                <Label Content="Full name" HorizontalAlignment="Left" Height="25" Margin="26,155,0,0" VerticalAlignment="Top" 
                    Width="230" FontFamily="Open Sans" FontSize="11" FontWeight="Bold" 
                />
                <TextBox Name="NewFullName" HorizontalAlignment="Left" Height="20" Margin="26,180,0,0" TextWrapping="Wrap" Text="" 
                    VerticalAlignment="Top" Width="250" FontFamily="Open Sans" FontSize="10"
                 />
                <Label Content="Username" HorizontalAlignment="Left" Height="25" Margin="26,215,0,0" 
                    VerticalAlignment="Top" Width="230" FontFamily="Open Sans" FontSize="11" FontWeight="Bold"
                 />
                <TextBox Name="NewUsername" HorizontalAlignment="Left" Height="20" Margin="26,240,0,0" TextWrapping="Wrap" Text="" 
                    VerticalAlignment="Top" Width="250" FontFamily="Open Sans" FontSize="10"
                 />
                <Label Content="Email Address" HorizontalAlignment="Left" Height="25" Margin="26,275,0,0" 
                    VerticalAlignment="Top" Width="230" FontFamily="Open Sans" FontSize="11" FontWeight="Bold"
                 />
                <TextBox Name="NewEmail" HorizontalAlignment="Left" Height="20" Margin="26,300,0,0" TextWrapping="Wrap" Text="" 
                    VerticalAlignment="Top" Width="250" FontFamily="Open Sans" FontSize="10"
                 />
                <Label Content="Line Manager" HorizontalAlignment="Left" Height="25" Margin="26,335,0,0" 
                       VerticalAlignment="Top" Width="230" FontFamily="Open Sans" FontSize="11" FontWeight="Bold"
                 />
                <TextBox Name="NewManager" HorizontalAlignment="Left" Height="20" Margin="26,360,0,0" TextWrapping="Wrap" Text="" 
                         VerticalAlignment="Top" Width="250" FontFamily="Open Sans" FontSize="10" 
                 />
                <Label Content="Department" HorizontalAlignment="Left" Height="25" Margin="26,395,0,0" 
                       VerticalAlignment="Top" Width="230" FontFamily="Open Sans" FontSize="11" FontWeight="Bold"
                 />
                <TextBox Name="NewDepartment" HorizontalAlignment="Left" Height="20" Margin="26,420,0,0" TextWrapping="Wrap" Text="" 
                         VerticalAlignment="Top" Width="250" FontFamily="Open Sans" FontSize="10" 
                 />
                <Label Content="Job Title" HorizontalAlignment="Left" Height="25" Margin="26,455,0,0" 
                    VerticalAlignment="Top" Width="230" FontFamily="Open Sans" FontSize="11" FontWeight="Bold"
                 />
                <TextBox Name="NewJobTitle" HorizontalAlignment="Left" Height="20" Margin="26,480,0,0" TextWrapping="Wrap" Text="" 
                    VerticalAlignment="Top" Width="250" FontFamily="Open Sans" FontSize="10" 
                 />
            </Grid>
        </TabItem>
        <TabItem Header="TabItem">
            <TabItem.Background>
                <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                    <GradientStop Color="#FFF0F0F0" Offset="0"/>
                    <GradientStop Color="#FF21793B" Offset="1"/>
                </LinearGradientBrush>
            </TabItem.Background>
            <Grid Background="#FF21793B"/>
        </TabItem>
    </TabControl>

</Grid>
</Window>

'@
$READER = ( New-Object System.Xml.XmlNodeReader $XAML ) 
try{
$FORM   = [Windows.Markup.XamlReader]::Load( $READER )
}
catch{Write-Host "Unable to load Windows.Markup.XamlReader." }
$XAML.SelectNodes( "//*[@Name]" ) | %{ Set-Variable -Name ( $_.Name ) -Value     $FORM.FindName( $_.Name ) }
$FORM.ShowDialog() | Out-Null

1 Ответ

0 голосов
/ 16 ноября 2018

Вы можете просто набрать ". \ Yourscript" в терминале (он будет выполняться с powershell.exe). Это не будет работать, если вы нажмете F5, боюсь, VSCode может отлаживать только консольные приложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...