Триггер в WPF не работает

у меня есть 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>

В моем шаблоне я фактически добавил строку в качестве разделителя. между двумя строками ListViewItem .

Я просто не понимаю, почему триггер не работает!

1
задан Bill the Lizard 27 May 2013 в 14:39
поделиться

1 ответ

Свойство Background элемента управления используется только в ControlTemplate. Вы заменили шаблон шаблоном, в котором не используется фон, поэтому установка свойства не имеет никакого эффекта. Вы можете использовать {TemplateBinding Background} для привязки свойств к фону элемента управления. Возможно, вы захотите привязать к нему Background of the Grid:

<ControlTemplate TargetType="ListViewItem">
    <Grid Height="40" Background="{TemplateBinding Background}">
        <GridViewRowPresenter/>
2
ответ дан 2 September 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: