自定义ComboBoxItem具有选择区域问题

时间:2012-11-28 18:42:56

标签: wpf wpf-controls

我抓住组合框的整个模板进行一些修改。 ComboBoxItem的样式是:

    <Style x:Key="ComboBoxItemStyle" TargetType="{x:Type ComboBoxItem}">
        <Setter Property="OverridesDefaultStyle" Value="True"></Setter>
        <Setter Property="Background" Value="{DynamicResource StandardBlackBrush}"></Setter>
        <Setter Property="FocusVisualStyle" Value="{x:Null}"></Setter>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ComboBoxItem}">
                    <Border x:Name="Bd" BorderBrush="{DynamicResource StandardBlackBrush}" BorderThickness="3" SnapsToDevicePixels="true" >
                        <ContentPresenter x:Name="Cp" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                    </Border>       
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsHighlighted" Value="true">
                            <Setter TargetName="Bd" Property="BorderBrush" Value="{DynamicResource StandardFocusRectangleBrush}"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style >             

这导致非常小的组合框项目只是内容的高度/宽度,它只是一个文本字符串。为了使这些项目更大,我为ContentPresenter添加了一个边距,看起来很好:

<ContentPresenter Margin="20,10,20,10" x:Name="Cp" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>

但是,鼠标点击仍然必须在文本区域内。鼠标在文本外部单击,但在边框内单击弹出窗口但不进行选择。这是我的问题。

1 个答案:

答案 0 :(得分:1)

发生这种情况是因为边框在没有背景设置时不会对鼠标点击作出反应。

因此,要解决您的问题,请在XAML中的border元素上设置以下内容:

Background="Transparent"