我有一个非常基本的Powershell脚本,可以加载xaml布局。它抛出此错误:



我已经遍历了几次脚本和xaml文件,但是我没有看到问题出在哪里,而且我也没有完全理解我得到的错误意味着什么,这也无济于事。任何帮助将非常感激。谢谢你。

Powershell脚本:

Add-Type -AssemblyName presentationframework
$xaml = [xml](Get-Content MainWindow.xaml)
$reader = New-Object System.Xml.XmlNodeReader $xaml
$form = [Windows.Markup.XamlReader]::Load($reader)
$button = $form.FindName('testButton')
$button.Add_Click({
    $s = $form.FindName('testBox').Text;
    $form.FindName('testLabel').Content = $s;
})
$form.ShowDialog()

XAML文件:
<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Name="Window"
    Title="MainWindow"
    Width="640" Height="480">

    <Grid x:Name="LayoutRoot">
        <TextBox x:Name="testBox" HorizontalAlignment="Left"
                 Margin="26.782,48.626,0,0" TextWrapping="Wrap"
                 Text="New label text" VerticalAlignment="Top" Width="130.22"/>
        <Label x:Name="testLabel" Content="User Search" HorizontalAlignment="Left"
                 Margin="20.666,22.666,0,0" VerticalAlignment="Top"/>
        <Button x:Name="testButton" Content="Change It!" HorizontalAlignment="Left"
                 Margin="26.782,85,0,0" VerticalAlignment="Top" Width="75"/>
    </Grid>
</Window>

最佳答案

这个错误就是我所说的“因为我这么说是错误的”,它的意思恰恰是它所说的。

您不能在Powershell.exe中加载XAML,因为它是STA。而“许多”组件则需要这样做。我的很多人,我的意思是WPF。

幸运的是,每个PowerShell主机都支持STA

  • powershell.exe -sta(打开STA模式)
  • Powershell集成脚本环境(默认为STA)
  • PowerGUI(默认情况下为STA)
  • PowerShellPlus(在启动时按住Shift键以打开STA)
  • PrimalScript(位于顶部栏中的复选框中)
  • PowerSE/PowerWF(即将推出的STA)

  • 不过,在PowerShell中有许多更简单的方法来编写UI。您应该 checkout showui.codeplex.com

    希望这可以帮助,

    关于wpf - 无法在Powershell中加载XAML,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6541313/

    10-10 15:15