Ошибка: «Не удается найти свойство ItemsSource для этого объекта. Убедитесь, что свойство существует и может быть установлено».при запуске следующего скрипта Powershell с WPF.Требуется для создания контекстного меню со списком и привязкой данных.Текущий код PS ниже:
Add-Type -AssemblyName PresentationFramework
[xml]$Form = @"
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ContextMenuSample" Height="250" Width="250"
Name="MainForm">
<Button Name="btn1" Content="Right-click me!" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="10">
<Button.ContextMenu>
<ContextMenu Name="ctxMenu1">
<ContextMenu.Template>
<ControlTemplate>
<ComboBox Name="cmbColors" SelectedIndex="0">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Rectangle Fill="{Binding Value}" Width="16" Height="16" Margin="0,2,5,2" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</ControlTemplate>
</ContextMenu.Template>
</ContextMenu>
</Button.ContextMenu>
</Button>
</Window>
"@
$XMLReader = (New-Object System.Xml.XmlNodeReader $Form)
$XAMLWindow = [Windows.Markup.XamlReader]::Load($XMLReader)
$Form.SelectNodes("//*[@Name]") | %{
Set-Variable -Name ($_.Name) -Value $xamlWindow.FindName($_.Name) -Scope
Global
}
$cColors = @()
$cColors += New-Object PSCustomObject -Property @{Name='CustomColor1'; Value='#FFDFD991'}
([type]'System.Windows.Media.Colors').GetProperties() | Foreach { $cColors += New-Object PsCustomObject -Property @{Name=$_.name; Value=$_.name} }
$MainForm.Add_Loaded({
$cmbColors.ItemsSource = $cColors
})
$xamlWindow.ShowDialog() | Out-Null
Ожидаемое ContextMenu с комбинированными цветными выпадающими списками.