WPF中的触发器无法正常工作

时间:2010-08-13 02:16:22

标签: wpf triggers controltemplate

我有ListViewListView.ViewGridView

默认情况下,mouseOver正常工作,ListViewItem在鼠标悬停时突出显示,并在我点击它时被选中。但是在我修改ControlTemplate之后,我得到了我想要的模板,但突出显示和选择都消失了。

我使用触发器,但它不起作用。

这是我的代码。

<Style x:Key="filesListViewItemStyle" TargetType="{x:Type ListViewItem}">
            <Setter Property="IsSelected" Value="{Binding FileIsSelected}"/>
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListViewItem">
                        <Grid Height="40">
                            <GridViewRowPresenter/>
                            <Line X1="0.0" Y1="0.0" X2="{Binding ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListView}}}" Y2="0.0" StrokeThickness="1" StrokeDashArray="2" Stroke="Gray" />
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="Background" Value="Green"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

在我的模板中,我实际上在两行ListViewItem之间添加了一行作为分隔符。

我只是不明白为什么触发器无效!

1 个答案:

答案 0 :(得分:2)

Control的Background属性仅用于ControlTemplate。您已将模板替换为不使用Background的模板,因此设置该属性无效。您可以使用{TemplateBinding Background}将属性绑定到控件的背景。也许你想将Grid的背景绑定到它:

<ControlTemplate TargetType="ListViewItem">
    <Grid Height="40" Background="{TemplateBinding Background}">
        <GridViewRowPresenter/>