2014-09-12 3 views
0

я иметь следующий стиль кнопки, которая работает отлично:Отключить кнопки, но сохранить цвет фона

<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}"> 
     <Setter Property="SnapsToDevicePixels" Value="true"/> 
     <Setter Property="OverridesDefaultStyle" Value="true"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="Button"> 
        <Border x:Name="Border" 
         CornerRadius="2" BorderThickness="1" 
         Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}"> 
         <ContentPresenter Margin="2" HorizontalAlignment="Center" VerticalAlignment="Center" RecognizesAccessKey="True"/> 
        </Border> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsEnabled" Value="false"> 
          <Setter TargetName="Border" Property="Background" Value="{StaticResource DisabledBackgroundBrush}" /> 
          <Setter TargetName="Border" Property="BorderBrush" Value="{StaticResource DisabledBorderBrush}" /> 
          <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

с большим количеством стилей, определенных в самой кнопки я изменить фон кнопки (зеленый для активной)

<Button> 
    <Button.Style> 
     <Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding MainStatus.Restart}" Value="true"> 
        <Setter Property="Background" Value="LimeGreen" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 

сейчас, если я отключу кнопку, кнопка станет серой, из-за шаблона. есть способ сделать текущий фон более «серым», но сохраняя базовый цвет. поэтому, если кнопка была зеленой, цвет остается в основном зеленым?

ответ

0

Вместо установки фона серого, вы можете набор непрозрачность, чтобы придать ему отключенный вид (это сохранит свой фон) что-то вроде этого:

<ControlTemplate.Triggers> 
    <Trigger Property="IsEnabled" Value="false"> 
     <!--<Setter TargetName="Border" Property="Background" 
        Value="{StaticResource DisabledBackgroundBrush}" />--> 
     <Setter TargetName="Border" Property="Opacity" Value="0.4"/> 
     <Setter TargetName="Border" Property="BorderBrush" 
       Value="{StaticResource DisabledBorderBrush}" /> 
     <Setter Property="Foreground" 
       Value="{StaticResource DisabledForegroundBrush}"/> 
    </Trigger> 
</ControlTemplate.Triggers> 
+1

вот оно, спасибо! –

0

Создать стиль:

<Style.Triggers> 
     <Trigger Property="IsEnabled" Value="false"> 
      <Setter Property="Foreground" Value="#FFADADAD"/> 
     </Trigger> 
    </Style.Triggers>