WPF и powershell, нужно знать, как добавить стиль к элементу управления - PullRequest
0 голосов
/ 12 декабря 2018

У меня проблемы с установкой стиля для элемента управления groupbox.

У меня есть код XAML, стиль которого определен в верхней части кода.я ищу способ добавить стиль, уже определенный к элементу, который я создаю динамически.

Вот мой раздел стилей:

<Window.Resources> 
        <Style x:Key="GroupBoxStyle1" TargetType="{x:Type GroupBox}">
            <Setter Property="BorderBrush" Value="Blue"/>
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type GroupBox}">
                        <Grid SnapsToDevicePixels="true">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="6"/>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="6"/>
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="*"/>
                                <RowDefinition Height="6"/>
                            </Grid.RowDefinitions>
                            <Border BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.ColumnSpan="3" Grid.Column="0" CornerRadius="8" Grid.Row="1" Grid.RowSpan="3"/>
                            <ContentPresenter Grid.Column="1" Margin="{TemplateBinding Padding}" Grid.Row="2" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                            <ContentPresenter ContentSource="Header" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                              Grid.Row="1" Grid.RowSpan="2" Grid.Column="1"
                                              HorizontalAlignment="Center" VerticalAlignment="Center"
                                              RenderTransformOrigin="0.5,0.5">
                                <ContentPresenter.RenderTransform>
                                    <RotateTransform Angle="45"/>
                                </ContentPresenter.RenderTransform>
                            </ContentPresenter>
                            <Border BorderBrush="Black" BorderThickness="{TemplateBinding BorderThickness}" Grid.ColumnSpan="3" CornerRadius="4" Grid.Row="1" Grid.RowSpan="3">
                                <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="3">
                                    <Border BorderBrush="Red" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="2"/>
                                </Border>
                            </Border>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>

Вот что у меня есть для создания моего элемента:

   $NewBox = New-Object System.Windows.Controls.GroupBox
   $NewBox.Content = "L " + $counter 
   $NewBox.Header = "t"
   $NewBox.Margin = "0"
   $NewBox.Style = "GroupBoxStyle1"
   $NewBox.Name = "FirstBox"
   [System.Windows.Controls.Grid]::SetRow($NewBox,1)
   [System.Windows.Controls.Grid]::SetColumn($NewBox,1)

Я использовал свойство стиля, так как это было то, что яможно найти с помощью команды «Get-Member».У меня такое ощущение, что я не использую правильный синтаксис для вызова целевого типа.Потому что, хотя я могу заставить групповое окно появляться, я постоянно получаю следующую ошибку:

Параметр исключения «Стиль»: «Невозможно преобразовать значение« GroupBoxStyle1 типа «System.String» в тип «System.Windows».Стиль ""

1 Ответ

0 голосов
/ 12 декабря 2018

Вы должны установить для свойства Style значение Style:

$NewBox.Style = $window.TryFindResource("GroupBoxStyle1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...