[XAML-W8 app] Pagina Toetsaanslag detecteren

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 11-07 20:53
Ik ben mijn eerste app aan het programmeren in W8 en nu wil ik net als in het Startscherm meteen beginnen te tikken in mijn applicatie om een zoekveld te activeren.

De keydown event heb ik proberen te koppelen aan zowel de Page als het Grid van mijn applicatie, maar die events worden nooit getriggerd. Misschien komt dat doordat de focus daar niet ligt, maar juist onafhankelijk van waar de focus ligt moet er een keydown event worden getriggerd.

Ook Me.keydown, MyBase.keydown en MyClass.keydown worden niet getriggerd.

Hoe kan ik een 'globale' keydown event krijgen?

[ Voor 7% gewijzigd door Swerfer op 29-10-2012 13:16 ]

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


Acties:
  • 0 Henk 'm!

  • HyperioN
  • Registratie: April 2003
  • Laatst online: 24-05 15:42
MSDN: CoreWindow.KeyDown event

Nog geen ervaring mee, maar dit lijkt me the way to go. Ook aan de hand hiervan:
Please use Window.Current.CoreWindow.KeyDown

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
In Winforms heb je daar de KeyPreview property op een form voor. Ik ben (nog :P ) niet super thuis in XAML/W8 apps maar kwam met voorgenoemd property + XAML googlen wel een heel eind ;) Volgens mij is dat 'tzelfde als onder WPF (ik meen dat W8 Apps niet echt WPF zijn, maar een soort afgeleide / opvolger ervan?)

[ Voor 14% gewijzigd door RobIII op 29-10-2012 13:23 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 11-07 20:53
RobIII schreef op maandag 29 oktober 2012 @ 13:22:
In Winforms heb je daar de KeyPreview property op een form voor. Ik ben (nog :P ) niet super thuis in XAML/W8 apps maar kwam met voorgenoemd property + XAML googlen wel een heel eind ;) Volgens mij is dat 'tzelfde als onder WPF (ik meen dat W8 Apps niet echt WPF zijn, maar een soort afgeleide / opvolger ervan?)
Om de één of andere reden worden de keydown/keyup events niet getriggerd. Als ik op hetzelfde grid een PointerPressed event plaats, dan werkt het wel:
Visual Basic .NET:
1
2
3
4
Private Sub grdStart_KeyDown(sender As Object, e As PointerRoutedEventArgs) _ 
                    Handles grdStart.PointerPressed
    txtbxSearchQuery.Focus(Windows.UI.Xaml.FocusState.Keyboard)
End Sub

Dit werkt dus niet:
Visual Basic .NET:
1
2
3
4
Private Sub grdStart_KeyDown(sender As Object, e As KeyRoutedEventArgs) _ 
                    Handles grdStart.KeyDown
    txtbxSearchQuery.Focus(Windows.UI.Xaml.FocusState.Keyboard)
End Sub

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


Acties:
  • 0 Henk 'm!

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 11-07 20:53
HyperioN schreef op maandag 29 oktober 2012 @ 13:17:
MSDN: CoreWindow.KeyDown event

Nog geen ervaring mee, maar dit lijkt me the way to go. Ook aan de hand hiervan:

[...]
De volgende code zou ik moeten toevoegen in de page constructor om een globale keydown event te krijgen:
code:
1
Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown

Ik ben al weer wat wijzer.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
protected override void OnNavigatedTo(NavigationEventArgs e)
{ 
    Window.Current.CoreWindow.KeyUp += CoreWindow_KeyUp;
}

void CoreWindow_KeyUp(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args)
{
    switch (args.VirtualKey)
    {
        case Windows.System.VirtualKey.Number1:
            break;
        case Windows.System.VirtualKey.Number2:
            break;

…
    }
}

protected override void OnNavigatedFrom(NavigationEventArgs e)
{
    Window.Current.CoreWindow.KeyUp -= CoreWindow_KeyUp;
}

Met de regel hieronder (in Visual Basic) krijg ik een foutmelding:
Visual Basic .NET:
1
Window.Current.CoreWindow.KeyUp += CoreWindow_KeyUp
'Public Event KeyUp(sender As Windows.UI.Core.CoreWindow, args As Windows.UI.Core.KeyEventArgs)' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event.

[ Voor 47% gewijzigd door Swerfer op 29-10-2012 14:46 ]

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


Acties:
  • 0 Henk 'm!

  • boe2
  • Registratie: November 2002
  • Niet online

boe2

'-')/

Ik heb hier geen VS2012 draaien, maar doet dit niet exact wat je wil?

XML:
1
<Page Keyboard.PreviewKeyDown="KeyBinding_PreviewKeyDown" />

Dit zou van overal aangeroepen moeten worden. In WPF heb ik dan in ieder geval een globale keydown. In de code zelf zet je dan gewoon de focus op je searchbox.

[ Voor 29% gewijzigd door boe2 op 29-10-2012 14:57 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.' - Pratchett.


Acties:
  • 0 Henk 'm!

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 11-07 20:53
Boeboe schreef op maandag 29 oktober 2012 @ 14:50:
Ik heb hier geen VS2012 draaien, maar doet dit niet exact wat je wil?

XML:
1
<Page Keyboard.PreviewKeyDown="KeyBinding_PreviewKeyDown" />

Onder je namespace declaraties in de root tag dus. Dit zou van overal aangeroepen moeten worden. In WPF heb ik dan in ieder geval een globale keydown. In de code zelf zet je dan gewoon de focus op je searchbox.
'Keyboard' behoort niet tot 'Page' in een Windows store app. Dat werkt helaas niet. De oplossing ligt in het voorbeeld in mijn vorige post, echter werk ik in VB ipv C# en krijg ik bij Window.Current.CoreWindow.KeyDown += KeyDowns een foutmelding...

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Swerfer schreef op maandag 29 oktober 2012 @ 14:59:
[...]

'Keyboard' behoort niet tot 'Page' in een Windows store app. Dat werkt helaas niet. De oplossing ligt in het voorbeeld in mijn vorige post, echter werk ik in VB ipv C# en krijg ik bij Window.Current.CoreWindow.KeyDown += KeyDowns een foutmelding...
Omdat je in VB.Net anders events assigned aan delegetes dan in C#; daarom heb je in VB.Net AddHandler en/of de Handles clause. Misschien dat je even moet inlezen in events?

[ Voor 16% gewijzigd door RobIII op 29-10-2012 15:35 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 11-07 20:53
Hoe je AddHandler en Handles gebruikt wist ik al, maar ik kan het niet koppelen aan Window.Current.CoreWindow.KeyDown += KeyDown

Ik wil dus net als in het c# voorbeeld de procedure KeyDown toevoegen aan Window.Current.CoreWindow.KeyDown, maar ik krijg dat niet voor elkaar.

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


Acties:
  • 0 Henk 'm!

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 26-06 00:23

ZaZ

Tweakers abonnee

Maar eh, equivalent van += is toch gewoon Addhandler in VB?
Dus dan krijg je zoiets:
Visual Basic:
1
Addhandler Window.Current.CoreWindow.Keydown, Addressof grdStart_KeyDown

Lekker op de bank


Acties:
  • 0 Henk 'm!

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 11-07 20:53
ZaZ schreef op dinsdag 30 oktober 2012 @ 01:38:
Maar eh, equivalent van += is toch gewoon Addhandler in VB?
Dus dan krijg je zoiets:
Visual Basic:
1
Addhandler Window.Current.CoreWindow.Keydown, Addressof grdStart_KeyDown
Bedankt! Die Addhandler structuur kende ik wel, echter maakte ik deze }:O kopieren/plakken fout:
code:
1
Addhandler Window.Current.CoreWindow.Keydown +=grdstart_KeyDown, Addressof grdStart_KeyDown

|:(

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Swerfer schreef op dinsdag 30 oktober 2012 @ 18:36:
[...]

Bedankt! Die Addhandler structuur kende ik wel, echter maakte ik deze }:O kopieren/plakken fout:
code:
1
Addhandler Window.Current.CoreWindow.Keydown +=grdstart_KeyDown, Addressof grdStart_KeyDown

|:(
Mja, sorry, maar dat had je toch echt aan de foutmelding moeten kunnen aflezen danwel afleiden dat er in die regel ergens iets niet klopte. Dit compiled niet eens.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1