2009-12-09 47 views
0

我想知道我是否也可以用CollectionViewSource做這樣的事情。我有一個DataTemplate,看起來像這樣:用於過濾對象所有實例的解決方案?

<DataTemplate DataType="{x:Type local:MyObject}"> 
    <StackPanel Orientation="Horizontal"> 
     <Grid> 
      <Image Source="Images\gear16.png" /> 
      <Image Source="Images\disk.gif" HorizontalAlignment="Right" VerticalAlignment="Bottom" 
        Visibility="{Binding MyProp, Converter={StaticResource BooleanToVisibilityConverter}}" /> 
     </Grid> 
     <TextBlock Margin="5,0,0,0" Text="{Binding Name}" VerticalAlignment="Center" /> 
    </StackPanel> 
</DataTemplate> 

所以當然,一切都綁定到該類型的對象,需要的是DataTemplate中,或者換句話說,類型MyObject來的每一個對象獲取數據源。我可以爲CollectionViewSource做類似的事嗎?使MyObject類型的每個對象都通過過濾方法?

問題是,我有這個MyObject的集合的幾個實例,它會很難過濾一個接一個(我認爲),仍然處理數據和一切的更新,所以我想知道如果有是這樣的解決方案。

謝謝!

回答

1

您可以使用CollectionView.Filter屬性執行過濾。沒有任何「羣體」過濾的方法,只能像你說的那樣「一個一個」過濾。你可以閱讀here關於過濾。
您的過濾處理程序將看起來像這樣:

private void ShowOnlyBargainsFilter(object sender, FilterEventArgs e) 
{ 
    if (e.Item is MyObject) 
    { 
     e.Accepted = true; 
    } 
    else 
    { 
     e.Accepted = false; 
    } 
} 

希望它能幫助。

相關問題