我发现了关于 loading .net 4.0 dll in Powershell 的问题.
现在我想知道我必须使用哪种 Add-Type,才能使用 WPF Datagrid来自 PowerShell ISE
在下面的作品之前
[xml] $xaml = @"
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<DataGrid Height="200" Width="500" HorizontalAlignment="Left" Margin="12,21,0,0"
Name="McDataGrid" VerticalAlignment="Top" RowHeight="30" ColumnWidth="100" >
</Window>
"@
$reader=(New-Object System.Xml.XmlNodeReader $xaml)
$Form=[Windows.Markup.XamlReader]::Load( $reader )
$Form.ShowDialog()
最佳答案
这是多个错误的组合。
- 标签末尾少了一个斜线
- 我有一个 TYPO inpowershell_ise.exe.Config 并且没有加载 .Net 4.0 程序集
检查加载了哪些程序集很好
[System.AppDomain]::CurrentDomain.GetAssemblies() |排序位置
现在这是一个可行的解决方案
function Invoke-sql1
{
param( [string]$sql,
[System.Data.SQLClient.SQLConnection]$connection
)
$cmd = new-object System.Data.SQLClient.SQLCommand($sql,$connection)
$ds = New-Object system.Data.DataSet
$da = New-Object System.Data.SQLClient.SQLDataAdapter($cmd)
$da.fill($ds) | Out-Null
return $ds.tables[0].rows
}
[xml] $xaml = @"
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid
AutoGenerateColumns="True"
HorizontalAlignment="Left"
Name="dataGrid1"
VerticalAlignment="Top"
Width="330"
HeadersVisibility="All"
>
<DataGrid.Columns>
<DataGridTextColumn Header="title"
Binding="{Binding title}"
/>
<DataGridTextColumn Header="itemid"
Binding="{Binding itemid}"
/>
</DataGrid.Columns>
</DataGrid >
</Grid>
</Window>
"@
$reader=(New-Object System.Xml.XmlNodeReader $xaml)
$Form=[Windows.Markup.XamlReader]::Load( $reader )
$con = New-Object System.Data.SqlClient.SqlConnection
$con.ConnectionString = "Data Source=localhost;Initial Catalog=ABDATA;Integrated Security=True"
$con.open()
$sql = @"
SELECT 'abc' title, 3 itemid
union
SELECT 'xyz' title, 2 itemid
union
SELECT 'efg' title, 1 itemid
"@
$dg = $Form.FindName("dataGrid1")
$dg.ItemsSource = @(Invoke-sql1 $sql $con)
$Form.ShowDialog()
唯一的问题是,我必须自己定义列。我认为这可以自动完成。
关于wpf - 如何在 PowerShell ISE 中使用 WPF DataGrid (.Net 4.0)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5843633/