2009-06-05 14 views
0

Ich fange gerade an, die zusammengesetzten Anwendungsbibliotheken für WPF zu verwenden. In meiner Shell habe ich eine Region in einer Tab-Control, die verwendet wird, um verschiedene Arten von Ansichten anzuzeigen. Ich habe auch eine Symbolleiste mit Schaltflächen an Befehle angeschlossen, zum Beispiel speichern. Die Befehle sind in meinen Ansichten gebunden, und die Ansichten verfügen über die Methoden canExecute und execute.WPF-Verbundanwendung - Registerkartenbereich - Ansicht nicht im Fokus

Die Idee ist, dass, wenn ich auf eine Registerkarte klicke, meine Symbolleistenschaltflächen entsprechend den Methoden in der Ansicht aktiviert oder deaktiviert werden sollten. Problem ist, wenn ich Tabs ändere die Ansicht nicht den Fokus und die canExecute für diese Ansicht nicht aufgerufen wird. Die Symbolleistenschaltflächen bleiben mit den Befehlen in der zuvor ausgewählten Ansicht verbunden und erinnern daran, bis ich tatsächlich auf die neue Ansicht klicke.

Ich bin jetzt ratlos darüber, wie man die Ansicht erzwingt, um den Fokus zu erhalten. Ich habe versucht, den Inhalt der Registerkarte zu sehen, wenn die Tabs SelectionChanged und den Fokus dort setzen, aber es macht keinen Unterschied. Irgendwelche Ideen?

Antwort

0

Versuchen Sie, auf das Ereignis View.Loaded zu hören, und rufen Sie dann View.focus() im Handler an. Wpf akzeptiert keine Fokusanforderungen bevor ein Element initialisiert und geladen wird. Da das SelectionChanged-Ereignis ausgelöst wird, bevor die Ansicht geladen wird, wird die Fokusanforderung einfach ignoriert. Das geladene Ereignis wird jedes Mal aufgerufen, wenn das Element angezeigt wird, nachdem es ausgeblendet wurde.


dieses Blog-Post Weitere Informationen finden Sie auf Fokus:

http://www.julmar.com/blog/mark/PermaLink,guid,6e4769e5-a0b3-47b2-a142-6dfefd0c028e.aspx

+0

ich mehr Details hier hinzugefügt haben: http://stackoverflow.com/a/36345970/37899 –