WPF verwendet und erwartete Ergebnisse der AccessText-Klasse

8

Ich habe heute die Klasse AccessText durchsucht. Ich konnte die genaue Verwendung und die Ergebnisse der Verwendung dieser Klasse nicht identifizieren.

  

Wenn Sie AccessText mit einem Label verwenden und Target als Eigenschaft verwenden    TextBox , der TextBox wird den Fokus bekommen, wenn access key gedrückt wird. Siehe unter code:

%Vor%
  

Wenn Sie AccessText mit einem Label verwenden und die Target-Eigenschaft als a verwenden    Buton , das Ereignis Button Click wird ausgeführt, wenn access key gedrückt wird.

Also meine Fragen sind

  

1.Was ist das definitive Verhalten von AccessText Class? Wenn ich voraussagen muss, dass es mit anderen Steuerelementen wie DataGrid , ComboBox verwendet wird,   %Code%? Wie kann ich mir des erwarteten Ergebnisses sicher sein?

     

2.Warum wird diese Klasse von RadioButton abgeleitet? Welche Anwendungen hat es als FrameworkElement ? scheint ein bisschen mehr für   Geben Sie einfach Accesskeys usw. an.

    
Kylo Ren 21.02.2016, 09:02
quelle

1 Antwort

11

AccessText ist ein FrameworkElement , das mehr oder weniger wie ein spezieller Typ von TextBlock wirkt, der es jedem Tastaturzeichen nach einem einzelnen Unterstrich ( _ ) erlaubt, als Zugriffsschlüssel zu fungieren.

Für ein bestimmtes Steuerelement hängt das Verhalten der zugeordneten Zugriffsschlüssel von der Methode OnAccessKey ab. OnAccessKey ist eine virtuelle Methode von UIElement , die folgende Definition liefert:

%Vor%

Jedes Steuerelement, das die Definition von OnAccessKey , definiert durch UIElement , nicht überschreibt, behält das Standardverhalten bei, dh, dass das Steuerelement beim Drücken der Zugriffstaste aktiviert wird.

ButtonBase , von dem Button erbt, hat die folgende Definition für OnAccessKey :

%Vor%

Das Standardverhalten von Button und anderen Steuerelementen, die von ButtonBase erben, besteht also darin, das Steuerelement in den Fokus zu bringen, wenn IsMultiple wahr ist. Andernfalls wird das click-Ereignis ausgelöst. ( IsMultiple ist wahr, wenn ein Zugriffsschlüssel mehr als einem UIElement zugeordnet ist.)

Vor diesem Hintergrund finden Sie hier die Antworten auf Ihre spezifischen Fragen:

  1. Das definitive Verhalten eines AccessText -Elements, das als ContentPresenter eines Steuerelements verwendet wird, besteht darin, den ersten Buchstaben nach einem einzelnen Unterstrich mit AccessKeyManager zu registrieren, wodurch die OnAccessKey -Methode des Steuerelements beim Schlüssel aufgerufen wird wird gedrückt. Wenn Sie wissen, was dies für ein bestimmtes Steuerelement bedeutet, müssen Sie wissen, welche Definition von OnAccessKey für dieses Steuerelement gültig ist. Wenn in der Vererbungskette keine Überschreibungen vorhanden sind, wird durch Drücken der Zugriffs-Taste das Steuerelement aktiviert. Wenn es eine Überschreibung gibt, hängt das Verhalten von der Definition der überschreibenden Methode ab. Dies kann durch Experimentieren, Lesen relevanter Dokumentation oder durch Untersuchung des Quellcodes festgestellt werden.

  2. AccessText ist ein FrameworkElement aus den gleichen Gründen, dass TextBlock ein FrameworkElement ist. Es hat eine visuelle Form und nimmt Platz ein, den das Layoutsystem berücksichtigen muss, wenn es andere Elemente relativ zu ihm positioniert. Außerdem ermöglichen FrameworkElements das Styling und sie besitzen ihre eigene Eigenschaft DataContext , die Bindungsszenarien ermöglicht, die sonst nicht möglich wären. Wenn AccessText kein FrameworkElement wäre, würde dies WPF-Entwickler unnötigerweise einschränken und vernünftige (wenn auch vielleicht seltene) Anwendungsfälle verhindern.

Bearbeiten

Hier ist ein Beispiel für einen ausgefallenen Power-Button, der die Nützlichkeit von AccessText als FrameworkElement zeigt:

%Vor%

Dies ergibt (nach Drücken von Alt ):

Nachdem Sie auf die Schaltfläche geklickt oder Alt + S gedrückt hatten, reagierte das Ansichtsmodell auf den Befehl, indem es Text und Fill änderte, was zu diesem Ergebnis führte :

Durch erneutes Klicken oder Verwenden der Zugriffstaste wird zum ersten Zustand zurückgekehrt.

    
devuxer 24.02.2016, 09:06
quelle

Tags und Links