我們的「表單頁面」用戶控件在當前可見頁面中不可見且位於當前可見頁面下方的時候從未被禁用,當新頁面被推到頂部時。因此,它們包含在標籤索引行爲中,導致不需要的副作用。
這幫助我得到這個問題的底部:
void InitializeFocusLogger() {
//debug key logging to make focus bugs easier to track
EventManager.RegisterClassHandler(
typeof(UIElement),
Keyboard.PreviewGotKeyboardFocusEvent,
(KeyboardFocusChangedEventHandler)OnPreviewGotKeyboardFocus);
}
string lastID = string.Empty;
private void OnPreviewGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) {
FrameworkElement control = e.NewFocus as FrameworkElement;
if (control == null) return;
ControlViewModel controlVM = control.DataContext as ControlViewModel;
if (controlVM == null || lastID == controlVM.ID) return;
lastID = controlVM.ID;
Debug.Print("Focused: {0} TabIndex: {1}", controlVM.ID, controlVM.TabIndex);
}
順便說一句 - 有沒有TabControl的只是按鈕,複選框,標籤等,在一個網格。 – jchristof
你不能指望別人來幫助你解決問題,而不會發布你的代碼 – makc
據我所知,你必須保持用戶創建表單的標籤索引在文件中,並將這些標籤索引分配給用戶創建表單的所有控件。 – YOusaFZai