Ich arbeite gerade an einer App, die das Tool "TimePicker" in Blend für Visual Studio 2017 verwendet, und ich habe eine Frage zu einem Ereignis, das ich versuche zu finden. Nach dem Auswählen einer Zeit möchte ich separate Ereignisse haben, wenn die Prüftaste gedrückt wird, die die Zeit ändert, und wenn die X-Taste gedrückt wird, um abzubrechen und vom Flyout zurückzukehren. Ich glaube, dass ich das TimeChanged-Ereignis des TimePickers verwenden kann, um zu bestimmen, ob die Prüftaste gedrückt wurde, aber ich kann nicht herausfinden, welches Ereignis funktionieren würde, wenn die zu löschende x-Taste gedrückt wurde. Weiß jemand?UWP TimePicker Visual Studio 2017
1
A
Antwort
0
Es gibt keinen offensichtlichen Weg, es zu tun. Es gibt eine Schaltfläche zum Verwerfen in der TimePickerFlyoutPresenter
, aber Zugriff darauf ist nicht genug. Sie müssen auch Tastaturkürzel wie die [ESC] -Taste verwalten.
Sie haben mich ein bisschen neugierig, wie man es hackt, also hier ist, was ich bis jetzt gekommen bin. Hier ist eine TimePickerDismissal
Klasse, die ich sehr schnell gehackt habe. Die Idee ist, wenn der TimePicker
Fokus erhält, nachdem er ein Popup gedrückt hat und es keine Zeitänderung gemeldet hat, dann wird es als eine Kündigung betrachtet.
public class TimePickerDismissal
{
private bool _active;
private bool _timeChanged;
public event EventHandler Dismissed;
public TimePickerDismissal(TimePicker timer)
{
timer.GotFocus += OnTimeGotFocus;
timer.LostFocus += OnTimeLostFocus;
timer.TimeChanged += OnTimeChanged;
}
private void OnTimeGotFocus(object sender, RoutedEventArgs e)
{
if (!_active)
{
return;
}
_active = false;
if (!_timeChanged)
{
Dismissed?.Invoke(this, EventArgs.Empty);
}
_timeChanged = false;
}
private void OnTimeLostFocus(object sender, RoutedEventArgs e)
{
var selector = FocusManager.GetFocusedElement() as LoopingSelector;
if (selector == null)
{
return;
}
_active = true;
}
private void OnTimeChanged(object sender, TimePickerValueChangedEventArgs e)
{
_timeChanged = true;
}
}
Hier ist, wie es zu benutzen:
public sealed partial class MainPage
{
public MainPage()
{
InitializeComponent();
var dismissal = new TimePickerDismissal(MyTimePicker);
dismissal.Dismissed += OnTimerDismissed;
}
private void OnTimerDismissed(object sender, EventArgs e)
{
Debug.WriteLine("TimePicker dismissed!");
}
}
geben, dass ein Schuss. Lass es mich wissen, wenn es für dich funktioniert. Sie können dies wahrscheinlich in ein Verhalten tatsächlich verwandeln ...
Verwandte Themen
- 1. Kann ich Visual Studio 2017 auf Visual Studio 2015 installieren?
- 2. Visual Studio 2017 RC - C# UWP Projekt - Klasse
- 3. Visual Studio 2017 Installationsproblem
- 4. visual studio 2017 safemode
- 5. Visual Studio 2017 fehlgeschlagen mehrere Komponenten
- 6. Visual Studio 2017 Unerwarteter Charakter '
- 7. Visual Studio 2017 Application Manifest
- 8. Visual Studio Professional 2017-C#
- 9. Visual Studio 2017: Methodenreferenzen anzeigen
- 10. Visual Studio 2017 Compiler Fehler
- 11. Visual Studio Community 2017 Installationspfad
- 12. Visual Studio 2017 Debuggen Vbscript
- 13. Intellisense Javascript - Visual Studio 2017
- 14. Visual Studio 2017 TypeScript-Kompilierungsfehler
- 15. Visual Studio 2017 veröffentlichen Fehler
- 16. Visual Studio 2017 Intellisense Fehler
- 17. Visual Studio 2017 Dateien sperren
- 18. Visual Studio 2017 deaktivieren Abhängigkeitsprüfung
- 19. Visual Studio 2017 cshtml Dateifehler
- 20. Visual Studio 2017 SSRS-Berichtsvorlagen
- 21. Wie Visual Studio 2017-2015
- 22. Sudden Visual Studio 2017 SmartDeviceException DEP6200 Fehler
- 23. Visual Studio 2015 und Visual Studio 2017 (Community Edition) + Einheit
- 24. Visual Studio 2017-Projekte in Visual Studio 2015 öffnen
- 25. Portierungslösungen von Visual Studio 2013 zu Visual Studio 2017
- 26. SpeechClient.dll in Visual Studio UWP
- 27. UWP - DatePicker und TimePicker Anpassung
- 28. Visual Studio: In UWP Windows.ApplicationModel.Store zu nicht-UWP Projekt
- 29. Warum Visual Studio 2017 Ziel netcoreapp, wenn ein neues Klassenbibliotheksprojekt
- 30. Visual Studio 2017 und Webpack Ausgabe