Кнопка ведет себя (визуально) как textBox при отключении в WPF - PullRequest
0 голосов
/ 30 ноября 2011

У меня есть кнопка с некоторым цветом фона, но когда я отключаю эту кнопку, она выглядит как пустое текстовое поле. Почему это так и можно ли это решить.

1 Ответ

1 голос
/ 01 декабря 2011

Рассматривали ли вы определение собственного шаблона для кнопки. Вот пример.
Смотрите раздел «Свойство триггера = IsEnabled ...». Здесь вы можете определить внешний вид, как вам нужно для отключенных кнопок. Я предлагаю поиграть со всеми ценностями и определить его для ваших нужд.

<Style TargetType="Button">
    <Setter Property="OverridesDefaultStyle" Value="True"/>
    <Setter Property="BorderBrush" Value="LightGray"/>
    <Setter Property="BorderThickness" Value="0"/>
    <Setter Property="Foreground" Value="White"/>
    <Setter Property="HorizontalContentAlignment" Value="Center"/>
    <Setter Property="VerticalContentAlignment" Value="Center"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border x:Name="bord" 
                     CornerRadius="5" 
                     BorderBrush="{TemplateBinding BorderBrush}"
                     BorderThickness="{TemplateBinding BorderThickness}"
                     TextElement.Foreground="{TemplateBinding Foreground}"
                     TextElement.FontWeight="{TemplateBinding FontWeight}">
                    <Border.Background>
                        <LinearGradientBrush StartPoint="0 0" EndPoint="0 1">
                            <GradientStop Color="Gray" Offset="0"/>
                            <GradientStop Color="DarkGray" Offset="0.5"/>
                            <GradientStop Color="Black" Offset="0.5"/>
                        </LinearGradientBrush>
                    </Border.Background>
                    <ContentPresenter Content="{TemplateBinding Content}" 
                                 HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                 VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Background" TargetName="bord">
                            <Setter.Value>
                                <LinearGradientBrush StartPoint="0 0" EndPoint="0 1">
                                    <GradientStop Color="Gray" Offset="0"/>
                                    <GradientStop Color="DarkGray" Offset="0.5"/>
                                    <GradientStop Color="Black" Offset="0.5"/>
                                    <GradientStop Color="Black" Offset="0.7"/>
                                    <GradientStop Color="LightBlue" Offset="1"/>
                                </LinearGradientBrush>
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                    <Trigger Property="IsPressed" Value="True">
                        <Setter Property="BorderThickness" TargetName="bord" Value="2"/>
                    </Trigger>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter Property="Background" TargetName="bord" Value="Peru"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
...