मैं ListVox में प्रदर्शित रिकॉर्ड्स को फ़िल्टर करने के लिए CollectionViewSource का उपयोग कर रहा हूं। Xaml निम्नानुसार है।संग्रहव्यू स्रोत से आइटम्स कैसे प्राप्त करें?
<Window x:Class="WPFStarter.ListBoxItemsFilter.ListBoxFilterUsingCollectionViewSource"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="userControl"
Title="ListBoxFilterUsingCollectionViewSource" Height="300" Width="300">
<Window.Resources>
<CollectionViewSource Source="{Binding ElementName=userControl, Path=DataContext.Items}"
x:Key="cvs" Filter="CollectionViewSource_Filter"/>
</Window.Resources>
<StackPanel Orientation="Vertical">
<TextBox x:Name="txtSearch" TextChanged="txtSearch_TextChanged"/>
<TextBlock x:Name="txtSummary" Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Bottom" FontSize="8"></TextBlock>
<ListBox ItemsSource="{Binding Source={StaticResource cvs}}" DisplayMemberPath="First"/>
</StackPanel>
</Window>
और यहाँ मेरे कोड-behing है (कृपया ऐसी पास इस कोड-पीछे बात नहीं, वास्तविक आवेदन में मैं इस स्थिति के लिए MVVM का सबसे अच्छा उपयोग कर रहा हूँ)।
public partial class ListBoxFilterUsingCollectionViewSource : Window
{
private string _text="";
private readonly CollectionViewSource _viewSource;
public ListBoxFilterUsingCollectionViewSource()
{
InitializeComponent();
_viewSource = this.FindResource("cvs") as CollectionViewSource;
}
private void CollectionViewSource_Filter(object sender, FilterEventArgs e)
{
var character = e.Item as Character;
e.Accepted = character != null && character.First.ToLower().Contains(_text.ToLower());
}
private void txtSearch_TextChanged(object sender, TextChangedEventArgs e)
{
_text = txtSearch.Text;
_viewSource.View.Refresh();
SetSummary();
}
private void SetSummary()
{
var initialCount = 10; //HELP????
var filteredCount = 10; //HELP????
txtSummary.Text = String.Format("{0} of {1}", filteredCount, initialCount);
}
}
प्रश्न: मैं "SetSummary" विधि है, जिसमें मैं "initialCount" और CollectionViewSource वस्तु से "filteredCount" प्राप्त कर सकते हैं लिखने में मदद चाहिए।
आपकी रुचि के लिए धन्यवाद।
सिर्फ एक नोट है कि फ़िल्टर की गई संख्या वह संख्या है यदि विस्बाइल आइटम फ़िल्टर किए गए आइटमों की गणना नहीं करते हैं। – apc