2012-05-10 97 views
0

基本上這是一個存在於矩形和幾個文本塊之外的按鈕。矩形Fill代表我的按鈕的背景。如何在按下按鈕時更改此設置?選擇按下按鈕時更改矩形背景

按下按鈕後,背景也必須保持這種顏色。這基本上顯示了用戶在視覺上按下了什麼按鈕,什麼不按鈕。我的風格的

部分:

<Style x:Key="ButtonStyleReg" TargetType="{x:Type myClasses:RegButton}"> 
<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type Button}"> 
      <Grid x:Name="regButton"> 
       <Rectangle Name="rectangleBtn" Fill="#FF89959A" Height="Auto" RadiusY="15" RadiusX="15" Stroke="White" Width="Auto"/>            
      </Grid> 
      <ControlTemplate.Triggers> 
       <Trigger Property="IsFocused" Value="True"/> 
       <Trigger Property="IsDefaulted" Value="True"/> 
       <Trigger Property="IsPressed" Value="True" > 
        <Setter TargetName="rectangleBtn" Property="Fill" Value="Blue" /> 
       </Trigger> 
       <Trigger Property="IsEnabled" Value="False"/> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </Setter.Value> 
</Setter> 
<Setter Property="FontSize" Value="10.667"/> 

回答

1

您必須解決的正確的元素,嘗試給矩形的名稱和名稱引用的setter指向它:

<Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 
       <Grid x:Name="regButton"> 
        <Rectangle Fill="#FF89959A" 
           x:Name="rect" 
           Height="Auto" 
           RadiusY="15" 
           RadiusX="15" 
           Stroke="White" 
           Width="Auto" /> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsFocused" 
          Value="True" /> 
        <Trigger Property="IsDefaulted" 
          Value="True" /> 
        <Trigger Property="IsPressed" 
          Value="True"> 
         <Setter Property="Background" 
           TargetName="rect" 
           Value="Blue" /> 
         <!--??--> 
        </Trigger> 
        <Trigger Property="IsEnabled" 
          Value="False" /> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
+0

我試過這個(編輯我的文章)它確實改變了,但我如何保持填充顏色?似乎我不需要「isPressed」觸發器。 – PeterP

+1

爲此,您必須在'IsChecked'屬性上使用'ToggleButton'並設置一個觸發器。 'ToggleButton'記得它的狀態。一般來說,觸發器會在依賴項屬性發生變化時查找它的值。當您按下按鈕時Button.IsPressed會改變一次,當您釋放它時會再次改變。 'ToggleButton.IsChecked'是一個設置和保存的狀態。 –

+0

你能說明一下嗎?在歡呼聲之前從未聽說過。我的按鈕本質上已經是repeatButton(用於我的程序功能)。所以我認爲我不能只是改變我的按鈕? – PeterP