Я следовал вместе с руководством, расположенным здесь , пытаясь создать графический интерфейс с PowerShell, и все идет хорошо, за исключением того, что у меня есть DataGrid, который должен быть заполнен в моем GUI.
В моей сетке XML у меня есть:
[xml]$form=@"
<Window
[...]
<Grid>
[...]
<DataGrid Name="CSVGrid" HorizontalAlignment="Left" Height="340" Margin="10,60,0,0" VerticalAlignment="Top" Width="765"/>
[...]
</Grid>
</Window>
"@
Теперь в учебном пособии для создания формы используется следующее:
$XMLReader = (New-Object System.Xml.XmlNodeReader $Form)
$XMLForm = [Windows.Markup.XamlReader]::Load($XMLReader)
Но чтобы заставить работать мою DataGrid, я считаю, чтомне нужно определить мой "CSVGrid" DataGrid как " system.Windows.Forms.DataGridView " где-нибудь, но я не уверен, как связать это вместе.Запуск его без определения этого приведет к появлению ошибок, если я попытаюсь вызвать какие-либо свойства DataGrid, такие как установка количества столбцов или имен столбцов.
Любые идеи?
Способ POSHGUI реализует их формы на самом деле отлично работает для моих целей, но я предпочитаю редактировать формы WPF в Visual Studio.При необходимости я могу перестроить форму в POSHGUI, но, надеюсь, есть способ связать это вместе здесь, чтобы я мог продолжать использовать VS GUI для редактирования GUI формы.
Edit: Следует отметить, что в форме не только сетка данных, на случай, если она не ясна.
Редактировать 2: В качестве дополнительного бита информации, способ, которым POSHGUI форматирует элементы управлениявыглядит так:
#the form itself
$Form = New-Object system.Windows.Forms.Form
$Form.ClientSize = '400,400'
$Form.text = "Form"
$Form.TopMost = $false
#a datagrid
$DataGridView1 = New-Object system.Windows.Forms.DataGridView
$DataGridView1.width = 382
$DataGridView1.height = 335
$DataGridView1.location = New-Object System.Drawing.Point(8,55)
#a button
$Button1 = New-Object system.Windows.Forms.Button
$Button1.text = "My button"
$Button1.width = 126
$Button1.height = 30
$Button1.location = New-Object System.Drawing.Point(156,13)
$Button1.Font = 'Microsoft Sans Serif,10'
Затем он связывает их вместе с:
$Form.controls.AddRange(@($DataGridView1,$Button1))
Так что счастливо определяет переменную DataGrid как "system.Windows.Forms.DataGridView", & c,тогда как метод помещения всего XML в переменную $ и передачи его в «System.Xml.XmlNodeReader» не делает различий, в которые я не верю, поэтому я не могу вызвать какие-либо свойства DataGrid.
Но опять же, я бы предпочел создать графический интерфейс в Visual Studio, если смогу ...
Редактировать 3: Если это вообще поможет, проверьте раскрывающийся список intellisense,Существуют различные свойства DataGrid, но не ColumnCount для exдостаточно:
Так, может быть, это работает как задумано?Но в то же время, если моя переменная DataGrid определена явно как system.Windows.Forms.DataGridView, как в примере с POSHGUI, то настройка ColumnCount работает безупречно ...