簡體   English   中英

如何在單擊按鈕時臨時禁用鼠標懸停效果可見性?

[英]How to disable mouse over effect visibility temporarily on button click?

為了簡單起見,假設我的程序的按鈕在“關閉”時為白色,在“開啟”時為綠色。 當鼠標懸停在按鈕上時,按鈕的顏色變為淺藍色。 當前,單擊按鈕時,按鈕顏色將保持淡藍色,直到鼠標不再懸停在按鈕上為止,然后(當鼠標移開並且不再懸停在按鈕上時)按鈕的綠色或白色背景為顯示。 懸停效果和按鈕背景的代碼當前為...

<ControlTemplate TargetType="{x:Type Button}">
  <Border x:Name="bdr" CornerRadius="22" Margin="3" BorderThickness="2.5" BorderBrush="Black" Background="{TemplateBinding Background}">
     <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" ContentSource="Content" />
  </Border>
  <ControlTemplate.Triggers>
     <Trigger Property="IsMouseOver" Value="True">
         <Setter TargetName="bdr" Property="Background" Value="#ABBEC9"/>
     </Trigger>

單擊事件后,我需要立即顯示按鈕新背景(即使鼠標仍懸停在按鈕上)。 我在執行此操作時遇到了麻煩。

我已經嘗試過下面的MultiDataTrigger,但是即使單擊鼠標不再懸停在按鈕上時,懸停顏色也僅在單擊時閃爍為白色,並且不再顯示背景色,因此代碼顯然是錯誤的。

<MultiDataTrigger>
  <MultiDataTrigger.Conditions>
     <Condition Binding="{Binding ElementName=bdr, Path=IsMouseOver}" Value="True" />
  </MultiDataTrigger.Conditions>
     <Setter TargetName="bdr" Property="Background" Value="#ABBEC9" />
  </MultiDataTrigger>
<MultiDataTrigger>
   <MultiDataTrigger.Conditions>
      <Condition Binding="{Binding ElementName=bdr, Path=IsMouseOver}" Value="False" />
   </MultiDataTrigger.Conditions>
      <Setter TargetName="bdr" Property="Background" Value="White" />                            
</MultiDataTrigger>

任何幫助,將不勝感激。

您必須自己處理,可能需要最少的過程代碼(例如,布爾屬性)。

如果您想使事情保持簡單,則可以用另一種方式顯示狀態,例如利用BorderBrush顯示ButtonBackground

這是完整的模板:

<ControlTemplate TargetType="{x:Type Button}">
    <Border x:Name="bdr" CornerRadius="22" Margin="3" BorderThickness="2.5" BorderBrush="Black" Background="{TemplateBinding Background}">
        <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" ContentSource="Content" />
    </Border>
    <ControlTemplate.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter TargetName="bdr" Property="Background" Value="#ABBEC9"/>
        </Trigger>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter TargetName="bdr" Property="BorderBrush" Value="{Binding RelativeSource={RelativeSource AncestorType=Button},Path=Background}"/>
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM