Связывание WPF в ControlTemplate и Datatemplate с использованием Powershell5 - PullRequest
0 голосов
/ 24 июня 2019

Ошибка: «Не удается найти свойство 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 с комбинированными цветными выпадающими списками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...