WPF ComboBox и IsTabStop поведение - PullRequest
5 голосов
/ 05 июля 2011

У меня проблема с ComboBox управлением в WPF.

Я пытался установить свойство IsTabStop для управления, но оно не работает должным образом.

Если ComboBox недоступно для редактирования, IsTabStop работает правильно, но если ComboBox доступно для редактирования, оно всегда отвлекает внимание от навигации по клавиатуре. IsTabStop = false не имеет никакого эффекта!

Кроме того, когда ComboBox является редактируемым, а IsTabStop имеет значение true, навигация с помощью клавиатуры к предыдущему элементу управления "заблокирована" ... "Shift + Tab" не работает!

Это ошибка WPF? Есть ли обходной путь?

Я использую .Net 4.0.

Это пример ...

<Window
   x:Class="MainWindow"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   Title="MainWindow"
   Height="250"
   Width="600">

   <StackPanel
     Orientation="Horizontal"
     VerticalAlignment="Center">
     <TextBox
        Width="50"
        IsTabStop="True">
     </TextBox>
    <ComboBox
        Name="cmb1"
        Margin="10,0,0,0"
        Width="50"
        IsEditable="True"
        IsTabStop="False">
    </ComboBox>
    <DatePicker
        Name="dp1"
        Margin="10,0,0,0"
        Width="50"
        IsTabStop="True">
    </DatePicker>
    <TextBox
        Margin="10,0,0,0"
        Width="50"
        IsTabStop="False">
    </TextBox>
    <ComboBox
        Name="cmb2"
        Margin="10,0,0,0"
        Width="50"
        IsTabStop="False">
    </ComboBox>
    <ComboBox
        Name="cmb3"
        Margin="10,0,0,0"
        Width="50"
        IsEditable="True"
        IsTabStop="True">
    </ComboBox>

   </StackPanel>
 </Window>

попытаться перейти с помощью табуляции от первого текстового поля к последнему комбинированному списку ... "cmb1" сфокусироваться также с IsTabStop = False, "cmb2" нормально, потому что это не редактируется, на "cmb3" невозможно вернуться к предыдущему элементу управления с Shift + Tab.

Также DatePicker, похоже, имеет ту же проблему.

Ответы [ 2 ]

5 голосов
/ 18 февраля 2013

Немного опоздал, но в тот же день я искал точно такую ​​же проблему.Я обнаружил, что KeyboardNavigation.TabNavigation="None" решает проблему.

2 голосов
/ 05 июля 2011

Да, похоже, проблема с ComboBox, кто-то поднял вопрос с Microsoft:

Посмотрите здесь .Кажется, есть обходной путь.

Вот обходной путь.В событии Loaded вашего окна / элемента управления разместите этот код:

var textBox = myCbo.Template.FindName("PART_EditableTextBox", myCbo) as TextBox;
if (textBox != null)
   textBox.IsTabStop = myCbo.IsTabStop;

Измените myCbo для вашего имени в выпадающем списке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...