我有一個小的 XAML 表單,我從 powerShell 腳本中運行它。它有一個名為“newTab”的控制元件模板,我用它來創建一個帶有兩個按鈕的選項卡。在 XAML 內部作業正常。但現在我想在 PowerShell 代碼中創建一個新的 tabItem,但缺少實作此目的的正確語法。不幸的是,我在 C# 中關注本 教程。作者做了這樣的伎倆:
// create new tab item
TabItem tab = new TabItem();
tab.Header = string.Format("Tab {0}", count);
tab.Name = string.Format("tab{0}", count);
tab.HeaderTemplate = tabDynamic.FindResource("TabHeader") as DataTemplate;
PowerShell 腳本:
[xml]$XAML = @"
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="MainWindow" SizeToContent="WidthAndHeight" MinWidth="250">
<Window.Resources>
<ControlTemplate x:Key="newTab" TargetType="TabItem" >
<StackPanel Orientation="Horizontal" >
<Button Content="Test1"/>
<Button Content="Test2"/>
</StackPanel>
</ControlTemplate>
</Window.Resources>
<Grid>
<Grid>
<TabControl Name="tabCon" TabStripPlacement="left" ItemsSource="{Binding}">
<TabItem Template="{StaticResource newTab}"/>
</TabControl>
</Grid>
</Grid>
</Window>
"@
$reader=(New-Object System.Xml.XmlNodeReader $xaml)
try{$Form=[Windows.Markup.XamlReader]::Load( $reader )}
catch{Write-Host "Unable to load Windows.Markup.XamlReader"; exit}
$xaml.SelectNodes("//*[@Name]") | ForEach-Object {Set-Variable -Name ($_.Name) -Value $Form.FindName($_.Name)}
#$myNewTab = New-Object PSObject -Property "NewTab"
#$tab = new-Object System.Windows.Controls.TabItem -Style "{StaticResource newTab}"
#$tabCon.AddChild($xaml.tryFindResource("newTab"))
$Form.ShowDialog() | out-null
uj5u.com熱心網友回復:
您可以FindResource像在 C# 中一樣在 PowerShell 中使用:
# Create new tab item
$tab = [System.Windows.Controls.TabItem]::new()
# Set template embedded in XAML form
$tab.Template = $Form.FindResource('newTab')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/478212.html
