Клавиатурный фокус по сравнению с логическим фокусом в WPF

Это - то, как Мерзавец вычисляет SHA1 для файла (или, в терминах Мерзавца, "блобе"):

sha1("blob " + filesize + "\0" + data)

, Таким образом, можно легко вычислить его сами, не устанавливая Мерзавца. Обратите внимание, что "\0" ПУСТОЙ байт, не две символьных строки.

, Например, хеш пустого файла:

sha1("blob 0\0") = "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"

$ touch empty
$ git hash-object empty
e69de29bb2d1d6434b8b29ae775ad8c2e48c5391

Другой пример:

sha1("blob 7\0foobar\n") = "323fae03f4606ea9991df8befbb2fca795e648fa"

$ echo "foobar" > foo.txt
$ git hash-object foo.txt 
323fae03f4606ea9991df8befbb2fca795e648fa

Вот реализация Python:

from hashlib import sha1
def githash(data):
    s = sha1()
    s.update("blob %u\0" % len(data))
    s.update(data)
    return s.hexdigest()
21
задан Dave Clemmer 8 August 2011 в 22:32
поделиться

2 ответа

см. Обзор фокуса

Фокус клавиатуры относится к элементу, который в настоящее время получает ввод с клавиатуры. На всем рабочем столе может быть только один элемент с фокусом клавиатуры. В WPF элемент с фокусом клавиатуры для IsKeyboardFocused будет установлено значение true. Статическое свойство FocusedElement в классе Keyboard получает элемент, который в настоящее время имеет фокус клавиатуры.

Логический фокус относится к FocusManager.FocusedElement в фокусе сфера. Область фокуса - это элемент, который отслеживает FocusedElement в своей области. Когда фокус клавиатуры покидает фокус область действия, элемент с фокусом потеряет фокус клавиатуры, но сохранит логическая направленность. Когда фокус клавиатуры возвращается в область фокуса, элемент с фокусом получит фокус клавиатуры. Это позволяет клавиатуре фокус должен быть изменен между несколькими областями фокусировки, но гарантирует, что сфокусированный элемент в области фокуса восстанавливает фокус клавиатуры, когда фокус возвращается в область фокуса.

23
ответ дан 29 November 2019 в 21:24
поделиться

Я нашел хорошую серию сообщений в блоге о фокусе WPF.

  1. Part1ItsBasicallyFocus

  2. Part2ChangingWPFFocusInCode

  3. Part3ShiftingFocusToTheFirstAvailableElementInWPF

Все они удобны для чтения, но первая часть конкретно касается логического фокуса, а не клавиатуры. Третья часть показывает хороший способ установить фокус на элемент пользовательского интерфейса в UserControl.

7
ответ дан 29 November 2019 в 21:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: