解决方法@H_502_8@
尝试如下
<Window x:Class="FocusVisualStyle.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Style x:Key="MyFocusVisualStyle">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Margin="-2" StrokeThickness="1" Stroke="Red"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<StackPanel Orientation="Horizontal" Height="24">
<TextBox Width="96"/>
<Button Content="Yes" Width="64" FocusVisualStyle="{DynamicResource MyFocusVisualStyle}"/>
<Button Content="No" Width="64" FocusVisualStyle="{DynamicResource MyFocusVisualStyle}"/>
</StackPanel>
您可以根据自己的喜好进行自定义.这只是一个起点.
编辑:由于这么多人喜欢这个解决方案是另一个例子,它改变了所有按钮和文本框的焦点视觉风格,而没有显式设置每个控件的FocusVisualStyle属性(参见DynamicResource thingy?)在xaml
此外,它还使用动画来改变焦点矩形的颜色.
请享用 :)
<Window x:Class="FocusVisualStyle.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Style x:Key="MyFocusVisualStyle">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate >
<Rectangle Margin="-2" StrokeThickness="2" RadiusX="2" RadiusY="2" >
<Rectangle.Stroke>
<SolidColorBrush Color="Red" x:Name="RectangleStroke" />
</Rectangle.Stroke>
<Rectangle.Triggers>
<EventTrigger RoutedEvent="Rectangle.Loaded" >
<BeginStoryboard>
<Storyboard>
<ColorAnimation From="Red"
To="Orange"
Duration="0:0:0.5"
RepeatBehavior="Forever"
Storyboard.TargetName="RectangleStroke"
Storyboard.TargetProperty="Color"/>
<DoubleAnimation To="3"
Duration="0:0:0.5"
RepeatBehavior="Forever"
Storyboard.TargetProperty="StrokeDashOffset" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Rectangle.Triggers>
</Rectangle>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type Button}">
<Setter Property="FocusVisualStyle" Value="{StaticResource MyFocusVisualStyle}" />
</Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="FocusVisualStyle" Value="{StaticResource MyFocusVisualStyle}" />
</Style>
</Window.Resources>
<StackPanel Orientation="Horizontal" Height="24">
<TextBox Width="96"/>
<Button Content="Yes" Width="64" />
<Button Content="No" Width="64" />
</StackPanel>
在这里你看到我有一个Button和TextBox的样式,它为这个窗口中的所有按钮和文本框设置了FocusVisualStyle的属性.
<Window x:Class="FocusVisualStyle.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Window.Resources> <Style x:Key="MyFocusVisualStyle"> <Setter Property="Control.Template"> <Setter.Value> <ControlTemplate> <Rectangle Margin="-2" StrokeThickness="1" Stroke="Red"/> </ControlTemplate> </Setter.Value> </Setter> </Style> </Window.Resources> <StackPanel Orientation="Horizontal" Height="24"> <TextBox Width="96"/> <Button Content="Yes" Width="64" FocusVisualStyle="{DynamicResource MyFocusVisualStyle}"/> <Button Content="No" Width="64" FocusVisualStyle="{DynamicResource MyFocusVisualStyle}"/> </StackPanel>
您可以根据自己的喜好进行自定义.这只是一个起点.
编辑:由于这么多人喜欢这个解决方案是另一个例子,它改变了所有按钮和文本框的焦点视觉风格,而没有显式设置每个控件的FocusVisualStyle属性(参见DynamicResource thingy?)在xaml
此外,它还使用动画来改变焦点矩形的颜色.
请享用 :)
<Window x:Class="FocusVisualStyle.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Window.Resources> <Style x:Key="MyFocusVisualStyle"> <Setter Property="Control.Template"> <Setter.Value> <ControlTemplate > <Rectangle Margin="-2" StrokeThickness="2" RadiusX="2" RadiusY="2" > <Rectangle.Stroke> <SolidColorBrush Color="Red" x:Name="RectangleStroke" /> </Rectangle.Stroke> <Rectangle.Triggers> <EventTrigger RoutedEvent="Rectangle.Loaded" > <BeginStoryboard> <Storyboard> <ColorAnimation From="Red" To="Orange" Duration="0:0:0.5" RepeatBehavior="Forever" Storyboard.TargetName="RectangleStroke" Storyboard.TargetProperty="Color"/> <DoubleAnimation To="3" Duration="0:0:0.5" RepeatBehavior="Forever" Storyboard.TargetProperty="StrokeDashOffset" /> </Storyboard> </BeginStoryboard> </EventTrigger> </Rectangle.Triggers> </Rectangle> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style TargetType="{x:Type Button}"> <Setter Property="FocusVisualStyle" Value="{StaticResource MyFocusVisualStyle}" /> </Style> <Style TargetType="{x:Type TextBox}"> <Setter Property="FocusVisualStyle" Value="{StaticResource MyFocusVisualStyle}" /> </Style> </Window.Resources> <StackPanel Orientation="Horizontal" Height="24"> <TextBox Width="96"/> <Button Content="Yes" Width="64" /> <Button Content="No" Width="64" /> </StackPanel>
在这里你看到我有一个Button和TextBox的样式,它为这个窗口中的所有按钮和文本框设置了FocusVisualStyle的属性.