FrameworkElement.PredictFocus(FocusNavigationDirection) Metode

Definisi

Menentukan elemen berikutnya yang akan menerima fokus relatif terhadap elemen ini untuk arah gerakan fokus yang disediakan, tetapi tidak benar-benar memindahkan fokus.

public:
 override System::Windows::DependencyObject ^ PredictFocus(System::Windows::Input::FocusNavigationDirection direction);
public override sealed System.Windows.DependencyObject PredictFocus(System.Windows.Input.FocusNavigationDirection direction);
override this.PredictFocus : System.Windows.Input.FocusNavigationDirection -> System.Windows.DependencyObject
Public Overrides NotOverridable Function PredictFocus (direction As FocusNavigationDirection) As DependencyObject

Parameter

direction
FocusNavigationDirection

Arah di mana perubahan fokus prospektif harus ditentukan.

Mengembalikan

Elemen berikutnya yang fokus akan berpindah ke jika fokus benar-benar dilalui. Dapat kembali null jika fokus tidak dapat dipindahkan relatif terhadap elemen ini untuk arah yang disediakan.

Pengecualian

Menentukan salah satu petunjuk berikut dalam TraversalRequest: Next, , PreviousFirst, Last. Arahan ini tidak legal untuk PredictFocus(FocusNavigationDirection) (tetapi legal untuk MoveFocus(TraversalRequest)).

Contoh

Contoh berikut mengimplementasikan handler yang menangani beberapa input tombol yang mungkin, setiap tombol mewakili kemungkinan FocusNavigationDirection. Handler melacak elemen dengan fokus keyboard saat ini, dan memanggil PredictFocus elemen tersebut, dan menentukan yang sesuai FocusNavigationDirection sebagai inisialisasi untuk TraversalRequest parameter jenis yang disediakan. Alih-alih pindah ke elemen tersebut seperti MoveFocus yang akan dilakukan, handler mengubah dimensi fisik tujuan fokus yang diprediksi untuk tujuan visualisasi.

    private void OnPredictFocus(object sender, RoutedEventArgs e)
    {
        DependencyObject predictionElement = null;

        UIElement elementWithFocus = Keyboard.FocusedElement as UIElement;

        if (elementWithFocus != null)
        {
            // Only these four directions are currently supported
            // by PredictFocus, so we need to filter on these only.
            if ((_focusMoveValue == FocusNavigationDirection.Up) ||
                (_focusMoveValue == FocusNavigationDirection.Down) ||
                (_focusMoveValue == FocusNavigationDirection.Left) ||
                (_focusMoveValue == FocusNavigationDirection.Right))
            {

                // Get the element which would receive focus if focus were changed.
                predictionElement = elementWithFocus.PredictFocus(_focusMoveValue);
               
                Control controlElement = predictionElement as Control;

                // If a ContentElement.
                if (controlElement != null)
                {
                    controlElement.Foreground = Brushes.DarkBlue;
                    controlElement.FontSize += 10;
                    controlElement.FontWeight = FontWeights.ExtraBold;

                    // Fields used to reset the UI when the mouse 
                    // button is released.
                    _focusPredicted = true;
                    _predictedControl = controlElement;
                }
            }
        }
    }
Private Sub OnPredictFocus(ByVal sender As Object, ByVal e As RoutedEventArgs)
    Dim predictionElement As DependencyObject = Nothing

    Dim elementWithFocus As UIElement = TryCast(Keyboard.FocusedElement, UIElement)

    If elementWithFocus IsNot Nothing Then
        ' Only these four directions are currently supported
        ' by PredictFocus, so we need to filter on these only.
        If (_focusMoveValue = FocusNavigationDirection.Up) OrElse (_focusMoveValue = FocusNavigationDirection.Down) OrElse (_focusMoveValue = FocusNavigationDirection.Left) OrElse (_focusMoveValue = FocusNavigationDirection.Right) Then

            ' Get the element which would receive focus if focus were changed.
            predictionElement = elementWithFocus.PredictFocus(_focusMoveValue)

            Dim controlElement As Control = TryCast(predictionElement, Control)

            ' If a ContentElement.
            If controlElement IsNot Nothing Then
                controlElement.Foreground = Brushes.DarkBlue
                controlElement.FontSize += 10
                controlElement.FontWeight = FontWeights.ExtraBold

                ' Fields used to reset the UI when the mouse 
                ' button is released.
                _focusPredicted = True
                _predictedControl = controlElement
            End If
        End If
    End If
End Sub

Keterangan

MoveFocus adalah metode terkait yang benar-benar memindahkan fokus.

Berlaku untuk

Lihat juga