如何使 ListViewItem 的模板样式和 ListView.ItemTemplate 一起工作?

How to make both ListViewItem's template style and ListView.ItemTemplate working?

我的 App.xaml 中有以下代码。当我在 ListViewItem 上 click/hover 时,我重写了模板以使背景保持透明。

    <Style TargetType="{x:Type ListViewItem}">

        <Setter Property="Background" Value="Transparent" />
        <Setter Property="Height" Value="{StaticResource RowHeight}"/>

        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ListViewItem}">
                    <Border
                     BorderBrush="Transparent"
                     BorderThickness="0"
                     Background="{TemplateBinding Background}">
                        <GridViewRowPresenter HorizontalAlignment="Stretch" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Width="Auto" Margin="0" Content="{TemplateBinding Content}"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

    </Style>

我昨天问了一个问题 所以我在下面写了,如果我不应用上面的样式,它会非常有效。 如果这样做,我将在 ListView 中看不到任何内容。

        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition/>
                        <ColumnDefinition/>
                    </Grid.ColumnDefinitions>
                    <ProgressBar Grid.ColumnSpan="2" Grid.ZIndex="0" Value="{Binding ProgressBarValue}"/>
                    <Label Grid.Column="0" Grid.ZIndex="1" Content="{Binding CCC}"/>
                    <Label Grid.Column="1" Grid.ZIndex="1" Content="{Binding DDD}"/>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate> 

我确实需要使背景透明,但为什么这些代码不能协同工作?我该如何改进?

另外,你们怎么知道这里出了什么问题?我不知道在哪里可以找到 reference/explanations 或研究 xaml 代码背后的机制..

像这样尝试:

<ListView.ItemContainerStyle>
                <Style TargetType="{x:Type ListViewItem}">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type ListViewItem}">
                                <Border
                                     BorderBrush="Transparent"`enter code here`
                                     BorderThickness="0"
                                     Background="{TemplateBinding Background}">
                                    <GridViewRowPresenter HorizontalAlignment="Stretch" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Width="Auto" Margin="0" Content="{TemplateBinding Content}"/>
                                </Border>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </ListView.ItemContainerStyle>
        <ListView.ItemTemplate>
            <DataTemplate>
                    <Grid Background="Red">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
                        <ProgressBar Grid.ColumnSpan="2" Grid.ZIndex="0" Value="30"/>
                        <Label Grid.Column="0" Grid.ZIndex="1" Content="{binding}"/>
                        <Label Grid.Column="1" Grid.ZIndex="1" Text="{binding}"/>
                    </Grid>
                </DataTemplate>
        </ListView.ItemTemplate>

我正在使用 WPF 4.5 Unleashed 这本书作为 Xaml 的参考。