Поведение WPF ComboBox и IsTabStop

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

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

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

Кроме того, когда ComboBox доступен для редактирования и IsTabStop истинно, переход к предыдущему элементу управления с клавиатуры заблокирован. . «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, похоже, имеет ту же проблему.

5
задан Bill the Lizard 5 July 2011 в 12:49
поделиться