У меня есть пользовательский элемент управления, производный от 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)?
ПРИМЕЧАНИЕ. Сетка данных WPToolKit — хороший пример того, что я ищу. Вы можете просмотреть каждый элемент сетки, нажав TAB (не CTRL+TAB). Кажется, они реализуют AutomationPeers для DataGrid, каждой строки, каждого презентатора строки, каждой ячейки и каждого презентатора ячейки. Я ищу универсальное решение, с помощью которого я могу открыть дочерние элементы управления для TAB.
Вопрос:
Как сделать элементы ListView доступными для TAB (могут быть дочерними элементами ListViewItem)?