Проблема с отключенным стилем кнопки в WPF - PullRequest
0 голосов
/ 03 декабря 2018

Я использую стиль ниже в файле App.xaml.Я хочу, чтобы мои кнопки (SendCommandBtn) имели цвет # 5e95a7, когда они включены без скругленной границы и некоторых других стилей.

 <Style TargetType="{x:Type Button}" x:Key="SendCommandBtn">
        <Setter Property="Height" Value="28"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="BorderBrush" Value="#5e95a7"/>
        <Setter Property="FontSize" Value="16"/>
        <Setter Property="Cursor" Value="Hand"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate  TargetType="{x:Type Button}" >
                    <Border CornerRadius="0"  BorderThickness="0"  Height="28" Margin="0,0,10,0" >
                        <ContentPresenter VerticalAlignment="Center"  HorizontalAlignment="Center"/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter Property="Background" Value="#f2f2f2"/>
                            <Setter Property="Foreground" Value="Red"/>
                            <Setter Property="Cursor" Value="No"/>
                        </Trigger>
                        <Trigger Property="IsEnabled" Value="True">
                            <Setter Property="Background" Value="#5e95a7"/>
                            <Setter Property="Foreground" Value="#fff"/>
                            <Setter Property="Cursor" Value="Hand"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

    </Style>

    <Style TargetType="{x:Type Button}"  x:Key="NormalBtn">
        <Setter Property="Background" Value="#5e95a7"/>
        <Setter Property="Height" Value="28"/>
        <Setter Property="Foreground" Value="#fff"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="BorderBrush" Value="#5e95a7"/>
        <Setter Property="FontSize" Value="16"/>
        <Setter Property="Cursor" Value="Hand"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate  TargetType="{x:Type Button}" >
                    <Border CornerRadius="0"  BorderThickness="0" Background="#5e95a7" Height="28" Margin="0,0,10,0" >
                        <ContentPresenter VerticalAlignment="Center"  HorizontalAlignment="Center"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Теперь, когда у меня есть кнопка ниже:

 <Button Name="BtnSIM2" Content=" SIM 2" Grid.Column="2" Click="BtnSIM2_Click" Style="{DynamicResource SendCommandBtn}"></Button>

, когдакнопка включена, цвет фона прозрачный, а передний план белый.Когда кнопка снова отключена, фон прозрачен, а передний план красный.Может ли кто-нибудь помочь мне понять, что не так с моим стилем?

1 Ответ

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

Вы заменили шаблон элемента управления, поэтому вы должны изменить фон Border, который теперь является вашим «основным элементом управления».Чтобы сделать это, задайте имя для вашей Границы внутри и измените цвет этой рамки вместо этого следующим образом (нацеливая эту границу по ее имени):

<Style TargetType="{x:Type Button}" x:Key="SendCommandBtn">
   ...
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate  TargetType="{x:Type Button}" >
                <Border CornerRadius="0"  BorderThickness="0"  Height="28" Margin="0,0,10,0" x:Name="ButtonBorder" >
                    <ContentPresenter VerticalAlignment="Center"  HorizontalAlignment="Center"/>
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter Property="Background" TargetName="ButtonBorder" Value="#f2f2f2"/>
                        <Setter Property="Foreground" TargetName="ButtonBorder" Value="Red"/>
                        <Setter Property="Cursor" TargetName="ButtonBorder" Value="No"/>
                    </Trigger>
                    <Trigger Property="IsEnabled" TargetName="ButtonBorder" Value="True">
                        <Setter Property="Background" TargetName="ButtonBorder" Value="#5e95a7"/>
                        <Setter Property="Foreground" TargetName="ButtonBorder" Value="#fff"/>
                        <Setter Property="Cursor" TargetName="ButtonBorder" Value="Hand"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>

</Style>
...