代码之家  ›  专栏  ›  技术社区  ›  VHanded

WPF中的触发器不工作

  •  1
  • VHanded  · 技术社区  · 16 年前

    ListView ,与 ListView.View 作为 GridView .

    默认情况下 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>
    

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

    我只是不明白为什么扳机不起作用!

    1 回复  |  直到 13 年前
        1
  •  2
  •   Quartermeister    16 年前

    控件的Background属性仅在ControlTemplate中使用。您已将模板替换为不使用背景的模板,因此设置该属性无效。你可以用 {TemplateBinding Background} 将属性绑定到控件的背景。可能需要将网格的背景绑定到它:

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