2011-11-30 95 views
2

在Windows7中(也許是Vista),當TextBoxes接收到輸入焦點或獲取MouseOver時,現在會獲得藍色強調矩形。Windows7上的WPF文本框邊框

在我的WPF應用程序中,藍色焦點矩形真的伸出拇指 - 它不符合應用程序其餘部分的視覺樣式。

我該如何禁用它 - 或者更好的方式是自定義它?

(設置FocusVisualStyle到:在XAML {X}爲空不執行任何操作。)

回答

5

這是因爲適用於文本框的默認樣式。要修改此行爲,您必須創建一個自定義樣式/模板。只是看看這個樣品

<Style x:Key="TextBoxStyle1" BasedOn="{x:Null}" TargetType="{x:Type TextBox}"> 
     <Setter Property="BorderThickness" Value="1"/> 
     <Setter Property="Padding" Value="1"/> 
     <Setter Property="AllowDrop" Value="true"/> 
     <Setter Property="FocusVisualStyle" Value="{x:Null}"/> 
     <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/> 
     <Setter Property="Stylus.IsFlicksEnabled" Value="False"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TextBox}"> 
        <Border x:Name="border" Background="#FF8F8F8F" BorderBrush="#FF585858" CornerRadius="3" BorderThickness="2"> 
         <ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
        </Border> 
        <ControlTemplate.Triggers> 

         <Trigger Property="IsFocused" Value="True"> 
          <Setter Property="BorderBrush" TargetName="border" Value="Silver"/> 
          </Trigger> 

         <Trigger Property="IsEnabled" Value="False"> 
          <Setter Property="Opacity" TargetName="border" Value="0.15"/> 
         </Trigger> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="BorderBrush" TargetName="border" Value="Silver"/> 
         </Trigger> 

        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
+2

謝謝。可惜我們需要這樣的解決方法。 – NetworkBurger