2013-11-15 40 views
0

我有一個窗口與多個按鈕/文本框。當標籤的窗口,通過我想以可視方式風格控件時,他們收到鍵盤焦點類似於風格扳機鍵盤焦點

<Trigger Property="IsMouseOver" Value="True"> 
    <Setter Property="Background" Value="{StaticResource BasicBrush}" /> 
</Trigger> 

我以爲會有一個IsKeyboardFocus或相似,但無法找到它。有沒有人知道在不使用代碼隱藏的情況下處理事件的方法?

+0

它看起來像設置FocusVisualStyle屬性是要走的路? –

回答

3

正如Brian在評論中所建議的那樣,您聽起來像是在尋找FrameworkElement.FocusVisualStyle property。這讓你指定一個Style,誰的唯一目的就是定義一個ControlTemplate,它指定了應用於當前擁有焦點的控件的內容Adorner。下面是從鏈接頁面上MSDN採取一個簡單的例子:

<Style x:Key="MyFocusVisual"> 
    <Setter Property="Control.Template"> 
     <Setter.Value> 
      <ControlTemplate> 
       <Rectangle Margin="-2" StrokeThickness="1" Stroke="Red" 
        StrokeDashArray="1 2"/> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Style將增加一個紅色Rectangle各地各重點都有它應用了控制。

+0

請注意,'FocusVisualStyle'只適用於通過鍵盤導航獲得的焦點。使用鼠標或從代碼中設置不會使用這種風格。 [來自MSDN](http://msdn.microsoft.com/zh-cn/library/bb613567(v = vs.110).aspx)「任何鼠標動作或編程焦點更改都會禁用焦點視覺樣式的模式。」 – cod3monk3y

+0

更詳細地說:「焦點視覺樣式專門用於鍵盤焦點,因此,焦點視覺樣式是一種輔助功能,如果您希望對任何類型的焦點進行UI更改(無論是通過鼠標,鍵盤還是編程),則您不應該使用焦點視覺樣式,而應該在樣式或模板中使用設置器和觸發器,這些樣式或模板使用一般焦點屬性(例如IsFocused或IsFocusWithin)的值。「 – cod3monk3y