Как остановить дублирование метки с каждым элементом, выводимым в просмотре списка WPF - PullRequest
0 голосов
/ 22 апреля 2020

я впервые работаю с XAML. В настоящее время я выводю список пропущенных активов в моей программе, это отображается в пользовательском интерфейсе с использованием XAML и сетки в виде списка. В верхней части списка мне нужен заголовок, в котором говорится, что в следующем списке перечислены все недостающие активы. Но моя проблема в том, что для каждого элемента, выводимого в списке, он будет отображать этот заголовок вместе с ним, поэтому заголовок будет выводиться столько раз, сколько есть элементов в списке отсутствующих активов, вот мой код для просмотра списка

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

Это связано с тем, что свойство является меткой? Я попытался изменить его на текстовое поле, но проблема все еще существует.

Спасибо

1 Ответ

0 голосов
/ 22 апреля 2020

ListView является более изощренным ListBox.

Если вы предоставляете заголовок в шаблоне данных, это ожидаемое поведение, поскольку шаблон данных используется для визуализации каждого элемента . Вот почему, если у вас есть метка в шаблоне данных, она будет повторяться n раз (n - количество элементов в источнике ваших элементов).

Если вы хотите предоставить заголовки в ListView, вот документация Microsft, показывающая, как .

Судя по вашему коду, возможно, все, что вам нужно, это использовать ListBox вместо вашего ListView, и вы можете поместить заголовок над элементом ListBox и удалить заголовок " "из вашего шаблона данных, но это может быть слишком упрощено, и вы, возможно, не передали все содержимое вашего шаблона данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...