WPF Listview闪烁问题

时间:2011-08-24 09:54:14

标签: wpf listview

我正在使用一个线程来读取文件并从数据读取中创建一个对象数组。正在使用一个基于某些过滤器过滤记录的单独线程。 我正在使用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的功能

0 个答案:

没有答案