Изучая PowerShell, мне предложили решить проблему с Xaml.Совершенно не зная Xaml, я смог построить окно так, как я ожидаю, для моего частного проекта.
Играя с Xaml и приведенным ниже кодом, я смог сгенерировать окно ипоместите стол в этом.Идея заключается в том, что цикл будет создавать таблицу и пока она еще выполняется.
Clear-Host
$Test = "Vocabulary Test Results"
$AnotherTest = '<TextBlock FontWeight="Bold" Margin="10" FontFamily="Arial" FontSize="28" Foreground="Blue" HorizontalAlignment="Center" Text="$Test" /> <Separator />'
#Load Assembly and Library
Add-Type -AssemblyName PresentationFramework
[xml]$Form = @"
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
Title="MainWindow" Height="1000" Width="1000">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<StackPanel VerticalAlignment="Top">
$AnotherTest
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*" />
<RowDefinition Height="1*" />
<RowDefinition Height="1*" />
<RowDefinition Height="1*" />
</Grid.RowDefinitions>
<TextBlock FontWeight="Bold" Margin="10" FontFamily="Arial" FontSize="18" Foreground="Black" HorizontalAlignment="Center" Text="Question Nr:" />
<TextBlock Grid.Column="1" FontWeight="Bold" Margin="10" FontFamily="Arial" FontSize="18" Foreground="Black" HorizontalAlignment="Center" Text="Asked Question" />
<TextBlock Grid.Column="2" FontWeight="Bold" Margin="10" FontFamily="Arial" FontSize="18" Foreground="Black" HorizontalAlignment="Center" Text="Expected Answer" />
<TextBlock Grid.Column="3" FontWeight="Bold" Margin="10" FontFamily="Arial" FontSize="18" Foreground="Black" HorizontalAlignment="Center" Text="Your Answer" />
<TextBlock Grid.Column="4" FontWeight="Bold" Margin="10" FontFamily="Arial" FontSize="18" Foreground="Black" HorizontalAlignment="Center" Text="Result" />
<Button Grid.Column="1" Grid.Row="1">Button 5</Button>
<Button Grid.Column="2" Grid.Row="1">Button 6</Button>
<Button Grid.Row="2">Button 7</Button>
<Button Grid.Column="1" Grid.Row="2">Button 8</Button>
</Grid>
</StackPanel>
</ScrollViewer>
</Window>
"@
#Create a form
$XMLReader = (New-Object System.Xml.XmlNodeReader $Form)
$XMLForm = [Windows.Markup.XamlReader]::Load($XMLReader)
#Show XMLform
[void]$XMLForm.ShowDialog()
Проблема, с которой я сейчас борюсь, связана со строкой, содержащей этот код:
$AnotherTest = '<TextBlock FontWeight="Bold" Margin="10" FontFamily="Arial" FontSize="28" Foreground="Blue" HorizontalAlignment="Center" Text="$Test" /> <Separator />'
Я пытался добавить переменную за «Текст», но, пробуя все виды вещей, я не могу получить «Результаты словарного теста» в виде текста.Либо у меня появляются сообщения об ошибках, либо я получаю пустое поле, либо вижу код переменной, а не ожидаемый результат.
Я попробовал несколько идей, таких как
Text="$($Test")
Text=$Test
Text=""$Test""
Text={$Test}
и еще несколько,Ни один из них не дал ожидаемого результата.Пытаясь найти какое-то решение в Интернете, я видел несколько обязательных примеров, но должен признать, что я не до конца понял, как это работает.
Существует ли простой способ решить эту проблему или нет способа обойти привязки иесли да, как бы я это сделал?
Спасибо за любую помощь и предложения