Дважды нажмите на вкладку Silverlight ComboBox - PullRequest
0 голосов
/ 28 марта 2012

Я разрабатываю приложение Silverlight 4 для браузера, используя стандартный ComboBox , и мне нужно дважды нажать клавишу для перемещения по элементу управления. Все остальные элементы управления (TextBox, RadioButton и т. Д.) В форме ввода данных ведут себя нормально, т. Е. Требуется только одна вкладка.

Я создал простой пример приложения и обнаружил, что ComboBox работает правильно, поэтому в моем реальном приложении есть что-то особенное, что вызывает проблему. Я подозреваю, что проблема связана с тем, что я использую AccentColor Theme . У меня был ряд проблем с этими темами, и я понял, что их следует рассматривать как образцы того, что возможно. Их качество недостаточно хорошее для использования в производственном приложении, о чем свидетельствует Представляем новую тему Silverlight 4 В блоге.

Я задаю этот вопрос, чтобы я мог ответить на него сам, чтобы получить решение для дальнейшего использования.

1 Ответ

2 голосов
/ 28 марта 2012

Тема AccentColor создает неявный стиль для ComboBox, который включает в себя установку свойства Template. В этом шаблоне используется ToggleButton с пользовательским стилем, который обертывает ContentPresenter внутри ContentControl по какой-то причине (стиль?) И по умолчанию IsTabStop свойство верно. Явное задание этому свойству значения false восстанавливает интуитивное поведение одной вкладки при перемещении по элементу управления.

<ContentControl VerticalAlignment="Center" IsTabStop="False">
  <ContentControl.Foreground>
    <SolidColorBrush x:Name="ContentPresenterWrapperColor" Color="{StaticResource BaseColor1}" />
  </ContentControl.Foreground>
  <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</ContentControl>

Стандартный шаблон ComboBox не включает этот ContentControl , который объясняет разницу в поведении. Я недостаточно знаком с темой AccentColor, чтобы знать, будет ли лучше вообще удалить ContentControl или это необходимо для пользовательского визуального оформления.

К вашему сведению Silverlight Spy оказал большую помощь в выявлении проблемы в поведении, даже если это немного дорогое imho: -)

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