Когда, скажем, TextBox
и Button
, как показано ниже, все в порядке. Вы можете использовать табуляцию, чтобы идти назад и вперед между обоими элементами управления.Tab stop не работает для шаблонов управления текстовыми полями, когда тема Windows классическая - что я могу сделать?
<StackPanel>
<TextBox>Type Here</TextBox>
<Button>Click Me</Button>
</StackPanel>
Но если переопределить TextBox
макет, который вы не можете использовать табуляции для перехода к кнопке.
<Style TargetType="TextBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<StackPanel>
<ScrollViewer x:Name="PART_ContentHost" />
<Button>Template-Button</Button>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
То есть, вы можете перемещаться назад и вперед между текстовой областью и «Нажмите Me' кнопку (которая до сих пор отдельный контроль), но вы не достигнете„Template-Button“(которая является частью TextBox
):
Эта проблема не возникает с ОС Windows 7 Основной стиль.
Кажется, что это верно для шаблонов TextBox
, но не обязательно для каких-либо элементов управления. При шаблонизации Button
вы можете добраться до любой части элемента управления. В следующем примере вы можете достичь ComboBox
, а также TextBox
.
<Style TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<StackPanel>
<ComboBox>ComboBox</ComboBox>
<TextBox>TextBox</TextBox>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Интересно, почему это так, и если есть какие-либо обходной путь кроме не используя ControlTemplate
и «злоупотребление» другого контроля (например, Button
), как я теряю TextBox
-Особенности и должны повторно реализовать их.
К сожалению, я ничего не нашел при поиске в Интернете. Я нашел несколько источников, заявляющих, что классические шаблоны Windows по-разному реализованы, чем соответствующие шаблоны Aero (например, padding issue), но я не уверен, что это относится и к табуляции (хотя есть свойство IsTabStop
- по крайней мере, я wasn не удалось исправить эту проблему, явно установив это свойство на True
).
Итак, что я могу сделать?
Некоторых дополнительные примечания:
Это еще хуже для PasswordBox, как вы не можете достичь каких-либо шаблонных элементов как для Windows 7 классических и основную темы.
Этот вопрос является воспроизводимым в системе Windows 7, но AFAIK это также появляется на Windows 8.
Спасибо ... это было действительно полезно –