2014-04-15 1 views
4

단추를 클릭 할 때 CollectionViewSource를 새로 고칠 수있는 방법을 알고 싶습니다.WPF DataGrid 필터링 - Refreshing CollectionViewSource 새로 고침

지금까지 내가 CollectionViewSource를 생성

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

을 가지고 ... 내에서 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; 
      } 
     } 
    } 

그리고 내보기에 필터에 소스를 결합

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

,

모든 것이 작동하는 것 같습니다 (아이템은 그리드에 묶여 있습니다).하지만 그리드가 필터링되도록 위의 함수를 다시 실행할 수 있도록 뷰 또는 그리드를 새로 고치는 방법은 무엇입니까? 이 상쾌 얻을 CollectionViewSourceView 재산

감사

답변

10

전화 Refresh()을 (버튼으로 정말 클릭).

단추를 클릭 할 때 수행하려면 먼저 창 리소스에서 CollectionViewSource에 액세스 한 다음 해당보기에서 새로 고침을 호출해야합니다.

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

감사합니다. 완벽하게 작동합니다. – user3428422