wpf - 如何在 PowerShell ISE 中使用 WPF DataGrid (.Net 4.0)?

标签 wpf powershell .net-4.0 datagrid

我发现了关于 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() 

最佳答案

这是多个错误的组合。

  1. 标签末尾少了一个斜线
  2. 我有一个 TYPO inpowershell_ise.exe.Config 并且没有加载 .Net 4.0 程序集
  3. 检查加载了哪些程序集很好

    [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/

相关文章:

c# - 缩放 WPF 窗口

Powershell - 格式化锯齿状数组输出

localization - 如何强制 .NET4 及其工具使用英语进行豁免和其他消息

.net - 样式不适用于 Win7 x32 (.Net 4.0)

c# - 如何在 .net 4 中异步执行 Action

c# - 将 UserControl 的 SelectedValue 绑定(bind)到 ViewModel

c# - 如果从 pendrive 或服务器执行 Entity Framework 失败

c# - 在 WPF DataGrid 中显示 "Display name"而不是字段名称

Powershell Start-Process -NoNewWindow 不能与 -Credentials 一起使用

powershell - 使用 PowerShell 安装计划任务时失败时重试