gpt4 book ai didi

wpf - 使用Powershell的Add-type编译WPF Xaml,而不使用PowerBoots

转载 作者:行者123 更新时间:2023-12-02 23:48:48 25 4
gpt4 key购买 nike

我想在XAML中嵌入WPF代码,然后使用powershell add-type进行编译。
有PowerBoots,但我不想使用它。我要嵌入的代码是here。我提到了实现的The PowershellGuy way,但仍然需要使用文件后面的代码。

Add-Type -AssemblyName presentationframework
[xml]$xaml = @'
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="350" Width="525" AllowsTransparency="True"
WindowStyle="None"
WindowState="Maximized" Topmost="False" IsHitTestVisible="False">
</Window>
'@

$reader=(New-Object Xml.XmlNodeReader $xaml)
$Form=[Windows.Markup.XamlReader]::Load( $reader )
$Form.ShowDialog() | out-null

链接中的代码背后的代码是
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
var screenGeometry = new RectangleGeometry(new Rect(0, 0, ActualWidth, ActualHeight));
var excludeRectangle = new RectangleGeometry(new Rect(200, 200, 150, 150));
drawingContext.PushClip(CombinedGeometry.Combine(screenGeometry, excludeRectangle, GeometryCombineMode.Exclude, null));
drawingContext.PushOpacity(.8);
drawingContext.DrawRectangle(Brushes.Black, null, new Rect(0, 0, ActualWidth, ActualHeight));
drawingContext.Pop(); drawingContext.Pop();
}

谢谢!

最佳答案

您无法在通过XamlReader加载的XAML上保留任何代码,这基本上意味着您无法做您想做的事情(在宽松的XAML中覆盖Window的OnRender方法)而不创建新的派生类型从Window类...

但这对您想做的事情来说太过分了,我认为:

Add-Type -AssemblyName presentationframework
[xml]$xaml = @'
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
AllowsTransparency="True" WindowStyle="None"
Background="#AA000000" WindowState="Maximized"
Height="{x:Static SystemParameters.PrimaryScreenHeight}"
Width="{x:Static SystemParameters.PrimaryScreenWidth}"
Title="Window Title" Topmost="False" IsHitTestVisible="False"></Window>
'@

$reader=(New-Object Xml.XmlNodeReader $xaml)
$Form=[Windows.Markup.XamlReader]::Load( $reader )
$Form.ShowDialog() | out-null

关于wpf - 使用Powershell的Add-type编译WPF Xaml,而不使用PowerBoots,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5863209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com