WPF ComboBox ControlTemplate 示例 - 自定义下拉菜单样式
下面是一个使用 ControlTemplate 的 ComboBox 的例子:
<ComboBox>
<ComboBox.Resources>
<Style TargetType="ComboBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBox">
<Grid>
<ToggleButton x:Name="ToggleButton" Content="Select" Width="100" Height="30" />
<Popup x:Name="Popup" IsOpen="{TemplateBinding IsDropDownOpen}" Placement="Bottom" PlacementTarget="{Binding ElementName=ToggleButton}">
<Border Background="White" BorderBrush="Black" BorderThickness="1">
<ScrollViewer>
<ItemsPresenter />
</ScrollViewer>
</Border>
</Popup>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="ToggleButton" Property="IsEnabled" Value="False" />
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="ToggleButton" Property="Background" Value="LightGray" />
</Trigger>
<Trigger Property="IsDropDownOpen" Value="True">
<Setter TargetName="ToggleButton" Property="IsPressed" Value="True" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ComboBox.Resources>
<ComboBoxItem>Item 1</ComboBoxItem>
<ComboBoxItem>Item 2</ComboBoxItem>
<ComboBoxItem>Item 3</ComboBoxItem>
</ComboBox>
在这个例子中,我们创建了一个自定义的 ControlTemplate,用于替换默认的 ComboBox 样式。在 ControlTemplate 中,我们使用了一个 Grid 来放置 ToggleButton 和 Popup。ToggleButton 用于显示当前选择的项,Popup 用于显示下拉列表。
在 ControlTemplate.Triggers 中,我们定义了一些触发器,用于根据 ComboBox 的状态改变 ToggleButton 的样式。当 ComboBox 被禁用时,ToggleButton 也会被禁用。当鼠标悬停在 ComboBox 上时,ToggleButton 的背景色会变为浅灰色。当下拉列表打开时,ToggleButton 会被按下。
在 ComboBox 中,我们添加了一些 ComboBoxItem 作为下拉列表的选项。你可以根据需要添加更多的选项。
这只是一个简单的 ComboBox ControlTemplate 的例子,你可以根据自己的需求进行自定义。
原文地址: https://www.cveoy.top/t/topic/bHcv 著作权归作者所有。请勿转载和采集!