我已经为ComboBox
添加了以下样式,我在一年前碰巧将其作为WPFToolkit的一部分找到了。
它缺少一个基本的功能,也就是说,如果我点击TextBox
的{{1}}内部,我希望下拉菜单像往常一样展开。在此模板中,只能通过直接点击ComboBox
来打开下拉菜单。
我不知道在模板样式中寻找什么,你能指点我吗?
模板样式:
ComboBoxToggleButton
答案 0 :(得分:4)
ComboBox有两个用例。第一个是IsEditable是假的。在这种情况下,用户被限制为选择预定义项目。第二个是当IsEditable为true时,这种情况允许用户输入文本以及选择预定义的项目。
使用默认的Aero样式,单击“文本”区域(即IsEditable为true时)不会显示下拉列表。单击焦点/选择文本。其他样式会打开下拉列表。
要实现此目的,在另一个控件的顶部放置一个透明的ToggleButton,用于切换下拉可见性。类似的东西:
<Grid Grid.IsSharedSizeScope="true">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"
SharedSizeGroup="ComboBoxButton"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="PART_EditableTextBox"
Grid.Column="1"
Style="{StaticResource ComboBoxEditableTextBox}"
IsReadOnly="{Binding Path=IsReadOnly,RelativeSource={RelativeSource TemplatedParent}}"
Margin="{TemplateBinding Padding}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
<ToggleButton Background="{x:Null}"
Grid.ColumnSpan="3"
Style="{StaticResource ComboBoxTransparentButtonStyle}"
IsChecked="{Binding Path=IsDropDownOpen,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}"/>
</Grid>