我有一个listView
显示我的元素。显示值的过程工作得很好,我没有发现问题,但是当我尝试使用新值更新列表时,我需要清理此列表以再次显示新值。我尝试过像lstResults.Items.Clear()
这样的方法不工作。有正确的方法来进行此操作吗?
更新.cs
List<StructLog> All = new List<StructLog>();
if (lstResults.Items.Count > 0)
{
lstResults.DataContext = null;
lstResults.ItemsSource = null;
AllowUIToUpdate();
}
foreach (IPattern p in Patterns.GetAvailablePatterns())
{
p.Start();
Patterns.Results.Add(p.Result());
}
foreach (ObservableCollection<StructLog> res in Patterns.Results)
{
foreach (StructLog r in res)
{
All.Add(r);
}
}
lstResults.ItemsSource = All;
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(All);
PropertyGroupDescription groupDescription = new PropertyGroupDescription("Pattern");
view.GroupDescriptions.Add(groupDescription);
MainWindow.xaml
<ListView Name="lstResults" Grid.Row="1" IsEnabled="True" Grid.RowSpan="4" DataContext="All" Grid.ColumnSpan="5" Margin="5,5">
<ListView.View>
<GridView>
<GridViewColumn Header="Linha" Width="Auto" DisplayMemberBinding="{Binding LineNumber}" />
<GridViewColumn Header="Fonte" Width="Auto" DisplayMemberBinding="{Binding Source}" />
<GridViewColumn Header="Data" Width="Auto" DisplayMemberBinding="{Binding Time}" />
<GridViewColumn Header="Log" Width="Auto" DisplayMemberBinding="{Binding LineLog}" />
</GridView>
</ListView.View>
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Expander IsExpanded="True">
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Items[0].Pattern, StringFormat={} Teste: {0}}" FontWeight="Bold" Foreground="Gray" FontSize="22" VerticalAlignment="Bottom" />
<Border CornerRadius="10" Padding="1,1,1,1" BorderThickness="1" BorderBrush="Black" Background="Red" Margin="1,0,0,0" >
<TextBlock Text="{Binding Items.Count,StringFormat={} Items: {0}}" Padding="0" VerticalAlignment="Center" Margin="5,1,5,1" FontSize="15" FontWeight="Bold" Foreground="Black"/>
</Border>
</StackPanel>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
编辑 1
当我使用方法Clear
时对于 List<StructLog> All = new List<StructLog>();
列表很干净,但它仍然是一个意外的标题,如图像 1
最佳答案
您无法修改ItemsControl.Items
使用 ItemsControl.ItemsSource
时的集合。要清理 ListView,您只需将 ItemsSource 设置为 null,或者您可以替换 List<StructLog>
与 ObservableCollection<StructLog>
。之后您可以调用ObservableCollection.Clear
方法。
关于c# - ListView 项目不清除 (C#/WPF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47455076/