Tab两次移动Silverlight ComboBox

时间:2012-03-28 03:53:25

标签: silverlight silverlight-4.0

我正在使用标准ComboBox开发浏览器应用程序中的Silverlight 4,我需要按两次标签键来移动控件。数据输入表单中的其他控件(TextBox,RadioButton等)都表现正常,即只需要一个选项卡。

我创建了一个简单的示例应用程序,发现ComboBox的行为正常,因此我的真实应用程序有一些特殊的东西导致了这个问题。我怀疑问题是由于我使用的是AccentColor Theme。我对这些主题有很多问题,并且已经意识到它们应该被视为可能的样本。这篇Introducing the new Silverlight 4 themes博客文章表明,它们的质量不足以用于生产应用程序。

我问这个问题,以便我自己回答这个问题以获取解决方案以供将来参考。

1 个答案:

答案 0 :(得分:2)

AccentColor Theme为ComboBox创建implicit Style,其中包括设置Template属性。此模板使用ToggleButton自定义样式,由于某种原因(样式?)将ContentPresenter包裹在ContentControl内,默认情况下IsTabStop属性为true。将此属性显式设置为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,或者是否需要自定义视觉样式。

FYI Silverlight Spy在追踪行为问题方面提供了很大的帮助,即使它有点贵...... :()