Как я могу предотвратить вкладку в UserControl? - PullRequest
10 голосов
/ 12 октября 2011

У меня есть собственное всплывающее окно, которое перекрывает часть моего экрана.Когда он открыт, я хочу отключить вкладку в UserControl за ним.Я не хочу использовать свойство IsEnabled, потому что не хочу выделять серым цветом все элементы управления.

Есть ли другое свойство, которое делает то же самое?IsTabStop только предотвращает остановку вкладки в самом UserControl, а не в дочерних элементах, и IsFocusable не является допустимым свойством для UserControl.

Ответы [ 4 ]

17 голосов
/ 13 октября 2011

Используйте Присоединенное свойство KeyboardNavigation.TabNavigation с KeyboardNavigationMode.None для элемента управления контейнера.

KeyboardNavigation.TabNavigation="None"
5 голосов
/ 12 октября 2011

Вы можете привязать IsTabStop на дочерних элементах управления к IsTabStop на UserControl.

Таким образом, вы должны установить его только один раз.

0 голосов
/ 16 апреля 2012

Просто привяжите это свойство к пользовательскому элементу управления.

    <UserControl x:Class="PDV.UserControls.InputField"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 // etc... then:                     
                 x:Name="Root" KeyboardNavigation.TabNavigation="Local" >

        <Grid>
           <TextBox Name="textBox"  
                TabIndex="{Binding Path=TabIndex, ElementName=Root}" 
                IsTabStop="{Binding Path=IsTabStop, ElementName=Root}"  />                
        </Grid>
    </UserControl>
0 голосов
/ 13 октября 2011

Вы можете написать прикрепленное свойство, которое вы задали бы в верхнем элементе.
Это присоединенное свойство будет рекурсивно устанавливать IsTabStop в false во всех дочерних элементах.

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

...