FrameworkElement.PredictFocus(FocusNavigationDirection) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Sağlanan bir odak hareketi yönü için bu öğeye göre odağı alacak sonraki öğeyi belirler, ancak aslında odağı taşımaz.
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
Parametreler
- direction
- FocusNavigationDirection
Olası bir odak değişikliğinin belirlenme yönü.
Döndürülenler
Odak gerçekten geçirilmişse odağın taşınacağı bir sonraki öğe. Sağlanan yön için odak bu öğeye göre taşınamazsa döndürülebilir null
.
Özel durumlar
içinde aşağıdaki yol tariflerinden TraversalRequestbirini belirtti: Next, Previous, First, Last. Bu yönergeler için PredictFocus(FocusNavigationDirection) yasal değildir (ancak için MoveFocus(TraversalRequest)yasaldır).
Örnekler
Aşağıdaki örnek, her biri olası bir düğmeyi temsil eden birkaç olası düğme girişini işleyen bir FocusNavigationDirectionişleyici uygular. İşleyici, geçerli klavye odağıyla öğeyi izler ve bu öğeyi çağırır PredictFocus ve sağlanan tür parametresi için uygun FocusNavigationDirection başlatmayı TraversalRequest belirtir. İşleyici, bu öğeye olduğu gibi MoveFocus taşımak yerine görselleştirme amacıyla tahmin edilen odak hedefinin fiziksel boyutlarını değiştirir.
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
Açıklamalar
MoveFocus , odağı gerçekten taşımayı sağlayan ilgili yöntemdir.