WPF DataGrid过滤 - 刷新CollectionViewSource刷新

时间:2022-06-18 14:04:31

I want to know how I can refresh a CollectionViewSource when a button is clicked?

我想知道如何在单击按钮时刷新CollectionViewSource?

So far I have

到目前为止我有

<Window.Resources>
    <CollectionViewSource x:Key="cvsCustomers"
                          Source="{Binding CustomerCollection}" 
                          Filter="CollectionViewSource_Filter" >
    </CollectionViewSource>
</Window.Resources>

Which creates the CollectionViewSource...

这创建了CollectionViewSource ......

<DataGrid HorizontalAlignment="Left" 
              Height="210" 
              Margin="47,153,0,0"
              VerticalAlignment="Top" Width="410"
              ItemsSource="{Binding Source={StaticResource cvsCustomers}}"
              CanUserAddRows="False"

Which binds the source to my Datagrid

这将源绑定到我的Datagrid

    private void CollectionViewSource_Filter(object sender, FilterEventArgs e)
    {
        Customer t = e.Item as Customer;
        if (t != null)
        // If filter is turned on, filter completed items.
        {
            if (t.Name.Contains(txtSearch.Text))
            {
                e.Accepted = true;
            }
            else
            {
                e.Accepted = false;
            }
        }
    }

And a filter in my View,

在我的视图中有一个过滤器,

Everything seems to be working (items are being bounded to the grid) but how do I refresh the view or grid so I can fire of the above function again so the grid does get filtered? (by a button click really)

一切似乎都在工作(项目被限制在网格中)但是如何刷新视图或网格以便我可以再次触发上述功能,以便网格被过滤? (真的按一下按钮)

Thanks

1 个解决方案

#1


12  

Call Refresh() on View property of CollectionViewSource to get it refreshed.

在CollectionViewSource的View属性上调用Refresh()以刷新它。

In case you want to do it on button click, you need to access CollectionViewSource from window resources first and then call refresh on its View.

如果您想在按钮单击时执行此操作,则需要先从窗口资源访问CollectionViewSource,然后在其View上调用refresh。

((CollectionViewSource)this.Resources["cvsCustomers"]).View.Refresh();

#1


12  

Call Refresh() on View property of CollectionViewSource to get it refreshed.

在CollectionViewSource的View属性上调用Refresh()以刷新它。

In case you want to do it on button click, you need to access CollectionViewSource from window resources first and then call refresh on its View.

如果您想在按钮单击时执行此操作,则需要先从窗口资源访问CollectionViewSource,然后在其View上调用refresh。

((CollectionViewSource)this.Resources["cvsCustomers"]).View.Refresh();