Nacisk wskazówkę wizualną, która zapewnia WPF na Windows 7 jest linia przerywana, takie jak ten: Jak mogę zmienić sposób, w jaki fokus wygląda w WPF?
Teraz, w jaki sposób mogę zmienić sposób to wygląda? Jak mogę kontrolować jego wygląd?
Dzięki!
Nacisk wskazówkę wizualną, która zapewnia WPF na Windows 7 jest linia przerywana, takie jak ten: Jak mogę zmienić sposób, w jaki fokus wygląda w WPF?
Teraz, w jaki sposób mogę zmienić sposób to wygląda? Jak mogę kontrolować jego wygląd?
Dzięki!
spróbować czegoś jak po
<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>
można dostosować do własnych sympatii. To tylko punkt wyjścia.
Edit: Ponieważ tak wiele osób się podobało to rozwiązanie tutaj jest kolejnym przykładem, który zmienia ostrości styl wizualny dla wszystkich przycisków i pól tekstowych bez wyraźnej ustawieniem własności FocusVisualStyle dla każdej kontroli (patrz że DynamicResource thingy?) W XAML
Używa również animacji do zmiany koloru prostokąta skupienia.
Enjoy :)
<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>
Tutaj widać, że mam style Button i TextBox które ustalają FocusVisualStyle właściwości dla wszystkich przycisków i pól tekstowych w tym oknie.
Twój styl jest wyzwalany tylko na ognisku klawiatury, ale nie na ognisku myszy – WPFKK
Sprawdzę to, minęło sporo czasu odkąd je opublikowałem. Wróci tak szybko, jak będę mógł. –
@ user841612, ponieważ 'FocusVisualStyle' jest używany tylko wtedy, gdy fokus uzyskuje się za pomocą klawiatury, nie programowo lub za pomocą myszy. – jnovo
Dziedzicz sterowanie za pomocą ich. Po wybraniu przycisku przerysuj przycisk w jaki sposób ma wyglądać. –