2015-09-06 58 views
1

我做一個WPF程序,我做了一個自定義樣式按鈕按鈕:WPF後點擊行爲

<Style x:Key="ButtonMio" TargetType="{x:Type Button}"> 
     <Setter Property="Padding" Value="1"/> 
     <Setter Property="Background" Value="Transparent" /> 
     <Setter Property="Foreground" Value="Transparent"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Button}"> 
        <Border Name="border" Background="{TemplateBinding Background}"> 
         <ContentPresenter Name="content" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
            Margin="{TemplateBinding Padding}" 
            RecognizesAccessKey="True" 
            SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
            VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
        </Border> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 

          <Setter Property="Background" Value="#FF3EC8C6" /> 
          <Setter Property="Foreground" Value="Transparent"/> 
         </Trigger> 
         <Trigger Property="IsPressed" Value="True"> 

          <Setter Property="Background" Value="Transparent" /> 
          <Setter Property="Foreground" Value="Transparent"/> 
          <Setter Property="BorderBrush" Value="Transparent"/> 
         </Trigger> 
         <Trigger Property="IsFocused" Value="True"> 

          <Setter Property="Background" Value="Transparent" /> 
          <Setter Property="Foreground" Value="Transparent"/> 
          <Setter Property="BorderBrush" Value="Transparent"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

好了,按鈕公頃圖像內容(因此它比真正的按鈕較小)。由於背景是透明的,我用鼠標在觸發器上寫了這個:

<Setter Property="Background" Value="#FF3EC8C6" /> 

它可以工作。但只在點擊之前。點擊後不再有背景。即使點擊其他按鈕,並使第一個失去焦點(我認爲)背景仍然不會出現。 我試圖改變「IsPressed」和「IsFocused」,但在第一種情況下,背景並沒有消失,第二,沒有什麼好處,我不使用標籤來聚焦元素。

真的很抱歉我的英語。希望一切都清楚。謝謝!

回答

1

觸發器的聲明順序是問題。

<ControlTemplate.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
     <Setter Property="Background" Value="#FF3EC8C6" />  
     </Trigger> 
     <Trigger Property="IsPressed" Value="True"> 
     <Setter Property="Background" Value="Transparent" />   
     </Trigger> 
     <Trigger Property="IsFocused" Value="True"> 
     <Setter Property="Background" Value="Transparent" /> 
     </Trigger> 
</ControlTemplate.Triggers> 

IsMouseOver緊隨其後發生IsFocused,並使背景變爲透明。

試試這樣說:

 <ControlTemplate.Triggers> 
    <Trigger Property="IsFocused" Value="True"> 
     <Setter Property="Background" Value="#FF3EC8C6" />     </Trigger> 
     <Trigger Property="IsPressed" Value="True"> 
     <Setter Property="Background" Value="Transparent" />   
     </Trigger> 
     <Trigger Property="IsMouseOver" Value="True"> 
     <Setter Property="Background" Value="Transparent" /> 
     </Trigger> 
</ControlTemplate.Triggers>  
+0

它的工作!非常感謝! – Raikoug