Это на самом деле не ответ, потому что я не отвечаю на вопрос, кроме как сказать, что это не повторяется. Я добавляю это как ответ, потому что он слишком велик, чтобы быть комментарием, и требует форматирования.
Повторяю мой комментарий ранее, если что-то есть Collapsed
(или даже Hidden
), тогда ни у кого в нем не должно быть возможности получить фокус. Например, создайте новый проект Wpf и поместите его в окно, которое он вам дает:
<StackPanel>
<StackPanel>
<TextBox Text="Example1"/>
</StackPanel>
<StackPanel Visibility="Hidden">
<TextBox Text="Example2"/>
</StackPanel>
<StackPanel Visibility="Collapsed">
<TextBox Text="Example3"/>
</StackPanel>
<StackPanel>
<TextBox Text="Example4"/>
</StackPanel>
</StackPanel>
Теперь запустите приложение и поместите фокус в Example1 и попробуйте Tabbing. Фокус переместится с Example1 на Example4 и обратно. Это не относится к Примеру 2 или Примеру 3.
Далее, если я использую пример кода для конвертера:
<StackPanel>
<StackPanel Visibility="{Binding TabIndex, Converter={local:IntegerToCollapsedVisibilityValueConverter}, ConverterParameter=0}">
<TextBox Text="Example1"/>
</StackPanel>
<StackPanel Visibility="{Binding TabIndex, Converter={local:IntegerToCollapsedVisibilityValueConverter}, ConverterParameter=1}">
<TextBox Text="Example2"/>
</StackPanel>
<StackPanel Visibility="{Binding TabIndex, Converter={local:IntegerToCollapsedVisibilityValueConverter}, ConverterParameter=2}">
<TextBox Text="Example3"/>
</StackPanel>
<StackPanel Visibility="{Binding TabIndex, Converter={local:IntegerToCollapsedVisibilityValueConverter}, ConverterParameter=3}">
<TextBox Text="Example4"/>
</StackPanel>
</StackPanel>
и если я положу это в конструктор окна:
DataContext = new { TabIndex = 2 };
затем, когда я запускаю его, он показывает только элемент с ConverterParameter = 2, а табуляция не позволяет фокусу перемещаться куда-либо еще. Так что в вашей среде определенно происходит что-то еще, чего я не вижу - вам нужно дать Минимальный, полный и проверяемый пример , чтобы позволить людям продолжить расследование.
Кстати, я хочу упомянуть, что TabIndex - это имя свойства в WPF Control , если вы использовали это имя свойства в своей модели представления, не осознавая этого. Например, может быть, вы случайно привязываетесь к этому, а не к той, что на вашей модели представления.