【问题标题】:How to make both ListViewItem's template style and ListView.ItemTemplate working?如何使 ListViewItem 的模板样式和 ListView.ItemTemplate 都工作?
【发布时间】:2015-05-15 04:37:55
【问题描述】:

我的 App.xaml 中有以下代码。当我单击/悬停在 ListViewItem 上时,我覆盖了模板以使背景保持透明。

    <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>

昨天我问了一个问题 How to add a underlying progressbar across two or more ListViewItem in wpf? 所以我在下面写了,如果我不应用上面的样式,它会很好地工作。 如果这样做,我将在 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> 

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

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

【问题讨论】:

    标签: wpf xaml listview styles


    【解决方案1】:

    试试这样:

    <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 的参考。

    【讨论】:

    • 好书!谢谢!但我无法理解您将样式应用于 ListView.itemContainer 样式的想法。首先,我尝试在资源部分将样式的目标类型替换为 ListView.itemContainer,但它无法识别。然后我把样式放在我的 ListView.ItemTemplate 周围,结果是相同的空白列表视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多