我想修改comboBox的默认样式。所以我写了这段代码:
<!-- ComboBox style -->
<Style x:Key="{x:Type ComboBox}" TargetType="ComboBox">
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="ScrollViewer.CanContentScroll" Value="true"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBox">
<Grid>
<ToggleButton Name="ToggleButton"
Template="{StaticResource ComboBoxToggleButton}"
IsChecked="{Binding Path=IsDropDownOpen,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}"
ClickMode="Press">
</ToggleButton>
<ContentPresenter Name="ContentSite" IsHitTestVisible="False"
Content="{TemplateBinding SelectionBoxItem}"
ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
Margin="3,3,23,3"
<TextBox x:Name="PART_EditableTextBox"
Style="{x:Null}" Template="{StaticResource ComboBoxTextBox}"
Text="{TemplateBinding Text}"
Foreground="DarkBlue"
IsReadOnly="{TemplateBinding IsReadOnly}"/>
<Popup Name="Popup" Placement="Bottom"
IsOpen="{TemplateBinding IsDropDownOpen}"
AllowsTransparency="True" Focusable="False"
PopupAnimation="Slide">
<Grid Name="DropDown"
SnapsToDevicePixels="True" MinWidth="{TemplateBinding ActualWidth}"
MaxHeight="{TemplateBinding MaxDropDownHeight}">
<Border x:Name="DropDownBorder"/>
<ScrollViewer Margin="4,6,4,6" SnapsToDevicePixels="True">
<StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" />
</ScrollViewer>
</Grid>
</Popup>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
</Style.Triggers>
</Style>
这是我在XAML文件中的comboBox,但我不知道如何设置我的风格:
<ComboBox x:Name="nomiGiocatori" />
我如何应用此ComboBox的新Stype?
Reguards
答案 0 :(得分:4)
你的风格有点不对,应该是
<Style x:Key="YourButtonStyle" TargetType="{x:Type Button}">
在你的xaml代码中
<ComboBox x:Name="nomiGiocatori" Style="{StaticResource YourButtonStyle}"/>
如果您将样式定义为
,则可以将其应用于所有组合框<Style TargetType="{x:Type Button}" BasedOn="Button"/>
然后你不必对你的xaml做任何事情。
This answer describes a similar issue.
希望它有所帮助,
了Stian
答案 1 :(得分:0)
谢谢您的建议,但我认为您无法将目标类型为Button的样式应用于ComboBox对象。我已经审查了您的建议,但在WFP实施中的任何地方都无法使用。即使您使用BasedOn =“ Button”或“ ComboBox”。编译器生成错误消息TypeConverter,表示“样式”不支持从字符串转换。
ComboBox基本上分为三个部分:ComboBox,ComboBoxItems和ToggleButton元素。要覆盖默认设置,您必须首先以属性类型为模板定义这三种样式,然后将OverridesDefaultStyle设置为true。