2012-07-15 25 views
1

我試圖改變我的文本框的行爲,以便他們改變他們的邊界刷,如果有人在他們盤旋。同時,如果有人輸入文本框,我希望我的文本框保持綠色。 我第一次嘗試了事情的懸停和創造這段代碼:結合不同風格的觸發器(如&&)?

<Style TargetType="{x:Type TextBox}"> 
     <Style.Triggers> 
      <Trigger Property="TextBox.IsMouseOver" Value="True"> 
       <Setter Property="BorderBrush" Value="Green"/> 
       <Setter Property="BorderThickness" Value="2"/> 
      </Trigger> 
      <Trigger Property="TextBox.IsMouseOver" Value="False"> 
       <Setter Property="BorderBrush" Value="Black"/> 
       <Setter Property="BorderThickness" Value="1"/> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

這個問題是通過添加觸發器的IsKeyboardFocused事件。如果我添加這兩個額外的觸發器,除了將鼠標懸停在零件上以外,所有內容都可以使用所以我的文本框不會得到一個綠色的邊框,如果我把它懸停。

無論如何解決這個問題還是結合If IsMouseOver==true && IsKeyboardFocused == false then borderbrush = green這樣的兩個觸發器?

在此先感謝!

+3

MultiTrigger。 'nuff說。 – 2012-07-15 16:19:07

+0

您需要MultiDataTriggers。看到這裏:http://stackoverflow.com/questions/905932/how-to-provide-multiple-conditions-for-data-trigger-in-wpf – Surfbutler 2012-07-15 16:19:08

+0

是的,它的工作原理!謝謝:D – TorbenJ 2012-07-15 16:29:05

回答

3

MultiTrigger觸發條件的邏輯與組合。雖然沒有邏輯或OR MultiTrigger