如何停止在WPF列表视图中每个项目输出的标签被重复。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何停止在WPF列表视图中每个项目输出的标签被重复。相关的知识,希望对你有一定的参考价值。

这是我第一次使用XAML。我目前正在我的程序中输出一个缺失资产的列表,这是用XAML和列表视图中的网格在UI上显示的。在列表的顶部,我只是希望有一些标题,说明下面的列表是所有缺失的资产。但我的问题是,列表中每输出一个项目,它就会同时显示该标题,所以该标题最终会随着缺失资产列表中的项目的多少而被输出,以下是我的列表视图代码。

    <ListView Grid.Row="0" Grid.Column="1" Margin="0,5,0,20"
              ItemContainerStyle="{StaticResource SelectionlessListViewItemStyle}" 
              ItemsSource="{Binding MissingAssets}">
        <ListView.Style>
            <Style TargetType="ListView">
                <Style.Triggers>
                    <Trigger Property="HasItems" Value="False">
                        <Setter Property="Visibility" Value="Collapsed"></Setter>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </ListView.Style>
        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid Margin="5,0,5,0">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <Label Grid.Row="0" Grid.Column="2" Content="The following assets could not be found" FontWeight="Bold" VerticalAlignment="Center"/>
                    <TextBlock Grid.Row="1" Grid.Column="2" Text="{Binding}" VerticalAlignment="Center" Margin="5,0,0,0"/>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

这是否与属性是标签有关?我也试过把它改成文本框,但问题依然存在。

谅谅

答案

ListView是一个更加软化的ListBox。

如果你在数据模板中提供了头,这是预期的行为,因为数据模板是用来呈现 每项. 这就是为什么如果你的数据模板中有一个标签,它将被重复n次(n是你的项目源中的项目数量)。

如果你想在ListView中提供头标,那么你可以在ListView中提供头标。这里是Microsft的文档,显示如何.

从你的代码来看,也许你想要的是用ListBox来代替你的ListView,你可以把头放在ListBox元素上面,然后把你的数据模板中的 "头 "去掉,但这可能过于简化了,你可能没有把你的数据模板的内容全部给出。

以上是关于如何停止在WPF列表视图中每个项目输出的标签被重复。的主要内容,如果未能解决你的问题,请参考以下文章

如何停止加载标签栏项目选择的视图?

OnClick 事件与列表视图项目重复

在创建视图的片段期间为项目列表中的每个项目设置图像[重复]

如何在 WPF 中创建可编辑的树列表视图?

用于 RibbonTab 的 WPF IsSelected 绑定在 ctrl+tab 上停止工作

WPF:防止在 Shift + 箭头上选择 ListViewItem