2017-06-15 2 views
0

Ich habe 50 Schaltflächen auf einer Seite, also habe ich einen Style deklariert, der ein Border- und IsPressed-Verhalten für alle Buttons deklariert.WPF-Schaltfläche ... Gibt es eine Möglichkeit, eine Hintergrundfarbe getrennt von einer Style-Deklaration festzulegen

<UserControl.Resources> 
    <statusModule:BooleanToBackgroundColorConverter x:Key="BooleanToBackgroundColor"/> 
    <Style x:Key="ValveButtonStyle" TargetType="Button"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="Button"> 
        <Border Name="border" Background="Transparent" BorderThickness="1" BorderBrush="Black"> 
         <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
        </Border> 
        <ControlTemplate.Triggers> 
         <Trigger Property="Button.IsPressed" Value="True"> 
          <Setter TargetName="border" Property="BorderThickness" Value="3" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</UserControl.Resources> 

Das Problem, das ich habe, ist, dass jede Taste Hintergrundfarbe über eine separate Ansichtsmodell Eigenschaft gesteuert wird, wie

<Button Content="Deflection Gas Valve" Background="{Binding Path=OpenDeflectionGasValve, Converter={StaticResource BooleanToBackgroundColor}, Mode=OneWay}" Style="{StaticResource ValveButtonStyle}" 
<Button Content="Purge Gas Valve" Background="{Binding Path=OpenPurgeGasValve, Converter={StaticResource BooleanToBackgroundColor}, Mode=OneWay}" Style="{StaticResource ValveButtonStyle}" 

und einem anderen Hintergrund Schaltfläche Bindung an eine ganz andere Ansichtsmodell Eigenschaft wäre.

Wenn ich der Schaltfläche einen Stil zuweise, hat die Einstellung Hintergrund wie oben angegeben keine Auswirkung.

Gibt es eine Möglichkeit, dass ich einen Style für alle Tasten verwenden kann, aber einen Hintergrundwert wie oben für jeden angegeben.

+0

den Stil erwähnt, um Paste zu helfen! –

Antwort

1

in Ihrer ConroleTemplate, müssen Sie die ursprüngliche Background Eigenschaft der TextBox Kontrolle über TemplateBinding respektieren. Jede TextBox-Eigenschaft (von apparance), die in Ihrer Vorlage nicht erwähnt wird, wird bedeutungslos.

so

Background="Transparent" 

ändern:

Background="{TemplateBinding Background}" 

Nun wird der Hintergrund durch den Wert in der background TextBox Eigenschaft beeinflusst werden. und für Satz Standard Wert auf Hintergrund Eigenschaft, legen Sie die Farbe im Stil über Setzer:

<Setter Property="Background" Value="Transparent" /> 
+0

PERFEKT !! Funktioniert super! Vielen Dank! – chuckp

Verwandte Themen