У меня есть пользовательский элемент управления, полученный из ListView
. В этом представлении списка используется GridView
с двумя столбцами (каждый из которых имеет соответствующий шаблон): один столбец является заголовком (просто метка), а другой столбец - элементом управления.
При использовании это выглядит так:
<l:CoolList>
<TextBox l:CoolList.Caption="Name" Text={Binding Name} />
<TextBox l:CoolList.Caption="Age" Text={Binding Age} />
<WrapPanel>
<Button Click="btnOkay_click" />
<Button Click="btnCancel_click" />
</WrapPanel>
</l:CoolList>
В конечном итоге это выглядит примерно так (все хорошо выровнено):
Name: [____________]
Age: [____________]
[Okay][Cancel]
Теперь, когда я хочу обойти эти текстовые поля, используя TAB, он фокусируется только на первом текстовом поле. Чтобы изменить фокус на другие текстовые поля, я должен нажать CTRL + TAB.
Я просмотрел сайт MSDN и похоже, что мне может понадобиться реализовать AutomationPeer, но это действительно сбивает с толку то, что я должен делать. Кто-нибудь, кто имеет опыт работы с этим, знает, как сделать доступными дочерние текстовые поля (используя только TAB)?
ПРИМЕЧАНИЕ. Сетка данных WPFToolKit - хороший пример того, что я ищу. Вы можете пройти через каждый элемент сетки, нажав TAB (не CTRL + TAB). Кажется, они реализуют AutomationPeers для DataGrid, каждой строки, каждого предъявителя строки, каждой ячейки и каждого предъявителя ячейки. Я ищу общее решение, с помощью которого я могу открыть дочерние элементы TAB.
Вопрос:
Как сделать элементы ListView доступными для TAB (могут быть потомками ListViewItem)?