我正在使用一个线程来读取文件并从数据读取中创建一个对象数组。正在使用一个基于某些过滤器过滤记录的单独线程。 我正在使用listview来显示我上面得到的数据集的数据。
虽然一个文件覆盖似乎很好,但是当我搜索时,问题就存在了。
在我第一次应用过滤器时进行搜索,一切正常。现在,当我应用滤波器时,先前搜索的数据显示1秒(闪烁类型),然后呈现根据当前滤波器的新数据。 我正在使用调度程序来更新UI。 在绑定任何数据之前,我尝试通过将ListView ItemSource设置为null
来清除它我使用的XAML代码是: {
<ListView Name="listView1"
Grid.Row="0"
ItemsSource= "{Binding ElementName=Window1, Path=Entries}"
AllowDrop="True"
SelectionChanged="listView1_SelectionChanged"
Drop="listView1_Drop">
<ListView.View>
<GridView x:Name="GridView1" >
<GridViewColumn Header="Item" DisplayMemberBinding="{Binding Item}" />
<GridViewColumn Header="TimeStamp" DisplayMemberBinding="{Binding TimeStamp}"/>
<GridViewColumn Header="">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding Image}" Width="16" Height="16" VerticalAlignment="Top" HorizontalAlignment="Left"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Level" DisplayMemberBinding="{Binding Level}"/>
<GridViewColumn Header="Class" DisplayMemberBinding="{Binding Class}"/>
<GridViewColumn Header="Message" DisplayMemberBinding="{Binding Message1}" Width="250" />
</GridView>
</ListView.View>
</ListView>
}
代码背后是:
private void ClearListView()
{
UpdateList update = new UpdateList(UpdateListData);
List<LogEntry> searcheddata = new List<LogEntry>();
searcheddata = null;
listView1.ItemsSource = null;
listView1.Items.Clear();
listView1.Items.Refresh();
pdDispatcher.BeginInvoke(update, DispatcherPriority.Render, searcheddata);
}
psdispatcher是用于更新UI的调度程序。 searchdata是将数据源分配给listview的功能