您好我正在制作WPF计划。但是我的ComboBox有问题
我需要像这段代码一样的组合框样式。
<ComboBox Height="28" Background="White" VerticalContentAlignment="Center" Width="120">
<ComboBox.BorderBrush>
<LinearGradientBrush EndPoint="0,20" MappingMode="Absolute">
<GradientStop Color="#FFABADB3" Offset="0.05"/>
<GradientStop Color="#FFE2E3EA" Offset="0.07"/>
</LinearGradientBrush>
</ComboBox.BorderBrush>
<ComboBoxItem Content="Content1" IsSelected="True"/>
<ComboBoxItem Content="Content2"/>
</ComboBox>
此代码效果很好。
分割样式和视图后,此代码不起作用。
实际上,应用于ComboBox但未显示ComboBoxItems的样式。
有什么问题?
样式部分
<Style x:Key="ComboBoxLikeTextBox" TargetType="{x:Type ComboBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBox">
<ComboBox Height="28" Background="White" VerticalContentAlignment="Center">
<ComboBox.BorderBrush>
<LinearGradientBrush EndPoint="0,20" MappingMode="Absolute">
<GradientStop Color="#FFABADB3" Offset="0.05"/>
<GradientStop Color="#FFE2E3EA" Offset="0.07"/>
</LinearGradientBrush>
</ComboBox.BorderBrush>
</ComboBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
查看部分
<ComboBox Style="{DynamicResource ComboBoxLikeTextBox}">
<ComboBoxItem Content="Content1" IsSelected="True"/>
<ComboBoxItem Content="Content2"/>
</ComboBox>
答案 0 :(得分:0)
所以你创建了一个整体风格,只有一个setter。并且您使用该setter将模板框替换为包含不同组合框的模板,该模板具有您想要的所有属性,但不会使用重新组合的组合框的子项填充自己。当然,那个组合框中没有孩子;你从来没有给过它。并且不需要创建新模板来设置高度和诸如此类的东西。模板是重型火炮,你不需要这样的简单风格。
使用样式设置器设置要设置的属性,而不是核对整个控件。像这样:
<Style TargetType="ComboBox" x:Key="ComboBoxLikeTextBox">
<Setter Property="Height" Value="28" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Width" Value="120" />
<Setter Property="BorderBrush">
<Setter.Value>
<LinearGradientBrush EndPoint="0,20" MappingMode="Absolute">
<GradientStop Color="#FFABADB3" Offset="0.05"/>
<GradientStop Color="#FFE2E3EA" Offset="0.07"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>