下面是一个使用 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 的例子,你可以根据自己的需求进行自定义。

WPF ComboBox ControlTemplate 示例 - 自定义下拉菜单样式

原文地址: https://www.cveoy.top/t/topic/bHcv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录