Ich habe heute die Klasse AccessText
durchsucht. Ich konnte die genaue Verwendung und die Ergebnisse der Verwendung dieser Klasse nicht identifizieren.
%Vor%Wenn Sie
AccessText
mit einem Label verwenden undTarget
als Eigenschaft verwendenTextBox
, derTextBox
wird den Fokus bekommen, wennaccess key
gedrückt wird. Siehe unter code:
Wenn Sie
AccessText
mit einemLabel
verwenden und die Target-Eigenschaft als a verwendenButon
, das EreignisButton
Click
wird ausgeführt, wennaccess 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 wieDataGrid
,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 alsFrameworkElement
? scheint ein bisschen mehr für Geben Sie einfach Accesskeys usw. an.
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:
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
:
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:
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.
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:
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.
Tags und Links wpf c# data-binding xaml