Control.UseSystemFocusVisuals Properti

Definisi

Mendapatkan atau mengatur nilai yang menunjukkan apakah kontrol menggunakan visual fokus yang digambar oleh sistem atau yang ditentukan dalam templat kontrol.

public:
 property bool UseSystemFocusVisuals { bool get(); void set(bool value); };
bool UseSystemFocusVisuals();

void UseSystemFocusVisuals(bool value);
public bool UseSystemFocusVisuals { get; set; }
var boolean = control.useSystemFocusVisuals;
control.useSystemFocusVisuals = boolean;
Public Property UseSystemFocusVisuals As Boolean

Nilai Properti

Boolean

bool

true jika kontrol menggunakan visual fokus yang digambar oleh sistem; false jika kontrol menggunakan visual fokus yang ditentukan dalam ControlTemplate. Defaultnya adalah false; lihat Keterangan.

Contoh

Contoh ini memperlihatkan ControlTemplate yang menentukan visual fokus kustom untuk Tombol.

Beberapa elemen templat kontrol tidak ditampilkan untuk membuat bagian yang relevan lebih jelas.

<Style TargetType="Button">

<!-- Set UseSystemFocusVisuals to false. -->
    <Setter Property="UseSystemFocusVisuals" Value="False"/> 
     ...

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid>
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Normal"/>
                            <VisualState x:Name="PointerOver">
                             ...

                            </VisualState>
                        </VisualStateGroup>

<!-- Add VisualStateGroup for FocusStates. -->
                        <VisualStateGroup x:Name="FocusStates">
                            <VisualState x:Name="Focused">
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetName="FocusVisualWhite"
                                                     Storyboard.TargetProperty="Opacity"
                                                     To="1"
                                                     Duration="0"/>
                                    <DoubleAnimation Storyboard.TargetName="FocusVisualBlack"
                                                     Storyboard.TargetProperty="Opacity"
                                                     To="1"
                                                     Duration="0"/>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Unfocused"/>
                            <VisualState x:Name="PointerFocused"/>
                        </VisualStateGroup>

                    </VisualStateManager.VisualStateGroups>
                    <Border x:Name="Border"
                            Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            Margin="3">
                        <ContentPresenter x:Name="ContentPresenter"
                                          Content="{TemplateBinding Content}"
                                          ContentTransitions="{TemplateBinding ContentTransitions}"
                                          ContentTemplate="{TemplateBinding ContentTemplate}"
                                          Margin="{TemplateBinding Padding}"
                                          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
                                          AutomationProperties.AccessibilityView="Raw"/>
                    </Border>

<!-- Add elements for focus visuals. -->
                    <Rectangle x:Name="FocusVisualWhite"
                               IsHitTestVisible="False"
                               Stroke="{ThemeResource FocusVisualWhiteStrokeThemeBrush}"
                               StrokeEndLineCap="Square"
                               StrokeDashArray="1,1"
                               Opacity="0"
                               StrokeDashOffset="1.5"/>
                    <Rectangle x:Name="FocusVisualBlack"
                               IsHitTestVisible="False"
                               Stroke="{ThemeResource FocusVisualBlackStrokeThemeBrush}"
                               StrokeEndLineCap="Square"
                               StrokeDashArray="1,1"
                               Opacity="0"
                               StrokeDashOffset="0.5"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Keterangan

Properti ini salah secara default sehingga ControlTemplate kustom yang menentukan visual fokusnya sendiri berfungsi seperti yang diharapkan. Namun, semua kontrol kerangka kerja XAML mengatur properti ini ke true dalam ControlTemplate dan menggunakan visual fokus yang digambar sistem.

Untuk menentukan visual fokus kustom untuk kontrol, Anda perlu menyediakan ControlTemplate kustom. Di ControlTemplate, lakukan hal berikut:

  • Jika Anda memodifikasi ControlTemplate default, pastikan untuk mengatur properti UseSystemFocusVisuals ke false untuk menonaktifkan visual fokus sistem. Ketika diatur ke false, status fokus di VisualStateManager dipanggil.
  • Tentukan VisualStateGroup untuk FocusStates.
  • FocusStates Dalam grup, tentukan VisualStateuntuk Focused, , Unfocuseddan PointerFocused.
  • Tentukan visual fokus.

Berlaku untuk

Lihat juga