private void RegisterSetPasswordScope() { _revealButton = this.GetTemplateChild(RevealButtonPartName) as Button; if (_revealButton != null) { var beginReveal = new PointerEventHandler(BeginReveal); var endReveal = new PointerEventHandler(EndReveal); // Button will handle Pressed and Released, so we have subscribe to handled events too _revealButton.AddHandler(PointerPressedEvent, beginReveal, handledEventsToo: true); _revealButton.AddHandler(PointerReleasedEvent, endReveal, handledEventsToo: true); _revealButton.AddHandler(PointerExitedEvent, endReveal, handledEventsToo: true); _revealButton.AddHandler(PointerCanceledEvent, endReveal, handledEventsToo: true); _revealButtonSubscription.Disposable = Disposable.Create(() => { _revealButton.RemoveHandler(PointerPressedEvent, beginReveal); _revealButton.RemoveHandler(PointerReleasedEvent, endReveal); _revealButton.RemoveHandler(PointerExitedEvent, endReveal); _revealButton.RemoveHandler(PointerCanceledEvent, endReveal); }); } SetPasswordScope(true); }
/// <summary>Load a specific keyboard from its definition file.</summary> /// <param name="uri">The location of the keyboard definition file.</param> /// <param name="style">The style to use for a keyboard key.</param> /// <returns>An async task,</returns> private async Task LoadKeyboard(Uri uri, Style style) { var file = await StorageFile.GetFileFromApplicationUriAsync(uri); using (var stream = await file.OpenStreamForReadAsync()) { var textReader = (TextReader)new StreamReader(stream); string line; Dictionary<int, KeyInfo> allkeys = new Dictionary<int, KeyInfo>(); var hasAltGrKey = false; var readKeys = false; var readDeadKeys = false; while (null != (line = await textReader.ReadLineAsync())) { if (string.IsNullOrWhiteSpace(line) || line.StartsWith("#")) { continue; } if (line == "[Keys]") { readKeys = true; readDeadKeys = false; } else if (line == "[DeadKeys]") { readKeys = false; readDeadKeys = true; } else if (readKeys) { int row, col, span; var info = this.ReadKeyDefinition(line, out row, out col, out span); if (info == null) { continue; } hasAltGrKey |= info.HasAltGrCode; allkeys[info.Scancode] = info; this.Invoke(() => { var button = new Button(); button.Content = info[SymbolIndex.Normal].Label; Grid.SetColumn(button, col); Grid.SetRow(button, row); Grid.SetColumnSpan(button, span); button.Style = style; button.Tag = info; button.IsTabStop = false; button.AddHandler(UIElement.PointerPressedEvent, (PointerEventHandler)this.ButtonPressed, true); button.AddHandler(UIElement.PointerReleasedEvent, (PointerEventHandler)this.ButtonReleased, true); button.AddHandler(UIElement.PointerExitedEvent, (PointerEventHandler)this.ButtonReleased, true); this.MainGrid.Children.Add(button); }); } else if (readDeadKeys) { this.ReadDeadKeyDefinition(line, allkeys); } } this.allKeys = allkeys; this.usesAltGr = hasAltGrKey; } }