2016-11-03 35 views
-1

我在複選框的同一屬性上有兩個觸發器,並且它不能正常工作。WPF同一屬性上的多個觸發器不能正常工作

<ControlTemplate.Triggers> 

    <Trigger Property="IsChecked" Value="False"> 
     <Setter TargetName="InnerText" Property="Text" Value="False" /> 
     <Trigger.EnterActions> 
      <BeginStoryboard Storyboard="{StaticResource OnUnCheck}"/> 
     </Trigger.EnterActions> 
    </Trigger> 

    <Trigger Property="IsChecked" Value="True"> 
     <Setter TargetName="InnerText" Property="Text" Value="True" /> 
     <Trigger.EnterActions> 
      <BeginStoryboard Storyboard="{StaticResource OnCheck}"/> 
     </Trigger.EnterActions> 
    </Trigger> 

</ControlTemplate.Triggers> 

當我取消選中複選框,文本被設置,故事板被調用就好了。但是當我檢查CheckBox時,文本被正確設置,但故事板不被調用。然後,我可以取消選中複選框,該故事板仍然有效。

然後,如果我交換觸發器順序,那麼Value="True"是第一個,只有那個故事板才起作用。在這兩種情況下,文本都設置得很好,並確認這兩個故事板都可以工作。它只是第二個觸發器中的故事板在兩種情況下都不會被調用。我需要使用MultiTrigger ...嗎?

編輯:我的故事板比較落後,所以這是第一個觸發沒有要求故事板,而不是第二

回答

1

不感謝誰downvoted我的問題,但我想出了一個解決方案。擁有獨立的觸發器似乎沒有工作,所以我編輯我的故事板包含文本的設置,並把我的False支票存入一個<Trigger.ExitActions>

<Trigger Property="IsChecked" Value="True"> 
    <Trigger.EnterActions> 
     <BeginStoryboard Storyboard="{StaticResource OnCheck}"/> 
    </Trigger.EnterActions> 
    <Trigger.ExitActions> 
     <BeginStoryboard Storyboard="{StaticResource OnUnCheck}"/> 
    </Trigger.ExitActions> 
</Trigger> 

這也有不執行False一部分額外的好處一旦控件加載完成。