XAML এবং WPF (Windows Presentation Foundation) বা UWP (Universal Windows Platform) অ্যাপ্লিকেশনে ডাটা প্রেজেন্টেশন এবং ম্যানিপুলেশন খুবই গুরুত্বপূর্ণ বিষয়। CollectionView এবং Data Filtering Techniques এর মাধ্যমে ডাটা প্রদর্শন এবং ফিল্টার করা সহজ হয়। CollectionView হল একটি ডাটা প্রদর্শনের ব্যবস্থা, যা ডাটা বাইন্ডিংয়ের সাথে কাজ করে এবং ডাটা ফিল্টারিং, সোর্টিং, গ্রুপিং ইত্যাদি অপারেশন সম্পাদন করে।
CollectionView কী?
CollectionView একটি উপাদান যা একটি কালেকশন বা ডাটার সংকলনকে ভিউরূপে প্রদর্শন করে। এটি WPF এবং UWP অ্যাপ্লিকেশনের ডাটাবাইন্ডিং ব্যবস্থার একটি গুরুত্বপূর্ণ অংশ। CollectionView মূলত ডাটা ফিল্টারিং, সোর্টিং এবং গ্রুপিং করার জন্য ব্যবহৃত হয়, যা UI এ ডাটার প্রেজেন্টেশন নিয়ন্ত্রণ করে।
CollectionView একটি ICollectionView ইন্টারফেসের একটি বাস্তবায়ন। এটি সাধারণত একটি ObservableCollection বা অন্য কোনো কালেকশনের উপর কাজ করে এবং UI তে সেই ডাটাকে একটি ভিউরূপে প্রদর্শন করে।
CollectionView এর সুবিধা:
- Data Filtering: CollectionView দিয়ে ডাটা ফিল্টার করা যায়, যেমন কোন নির্দিষ্ট শর্ত পূর্ণ হলে ডাটা দেখানো বা লুকানো।
- Sorting: ডাটাকে একাধিক প্রপার্টির উপর ভিত্তি করে সজ্জিত করা যায়।
- Grouping: ডাটাকে নির্দিষ্ট ক্যাটেগরিতে গ্রুপ করা যায়।
CollectionView এর উদাহরণ
ধরা যাক, আপনি একটি ListBox এ ObservableCollection এর ডাটা প্রদর্শন করতে চান এবং সেগুলোকে CollectionView দিয়ে ফিল্টার, সোর্ট অথবা গ্রুপ করতে চান।
১. Basic CollectionView Example
<Window x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="CollectionView Example" Height="300" Width="400">
<Grid>
<ListBox Name="myListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Window>
C# Code-behind:
public MainWindow()
{
InitializeComponent();
ObservableCollection<Person> people = new ObservableCollection<Person>
{
new Person { Name = "John", Age = 30 },
new Person { Name = "Jane", Age = 25 },
new Person { Name = "Mark", Age = 40 }
};
// Create a CollectionView
ICollectionView collectionView = CollectionViewSource.GetDefaultView(people);
// Bind the CollectionView to the ListBox
myListBox.ItemsSource = collectionView;
}
এখানে:
ObservableCollection<Person>ব্যবহার করা হয়েছে, যার মধ্যে তিনটি ব্যক্তি রয়েছে।CollectionViewএর মাধ্যমে ডাটা ভিউরূপে প্রদর্শিত হচ্ছে।
Data Filtering Techniques
Data Filtering এর মাধ্যমে আপনি একটি বড় ডাটার মধ্যে থেকে নির্দিষ্ট শর্তের ভিত্তিতে কিছু ডাটা প্রদর্শন করতে পারেন। WPF বা UWP এ CollectionView ব্যবহার করে ডাটা ফিল্টার করা যেতে পারে।
Filtering with ICollectionView
ICollectionView.Filter প্রোপার্টি ব্যবহার করে আপনি CollectionView এর মধ্যে ডাটা ফিল্টার করতে পারেন। এখানে একটি Predicate ফাংশন ব্যবহার করা হয়, যা শর্ত পূর্ণ হলে শুধুমাত্র সেই ডাটা প্রদর্শন করে।
উদাহরণ:
public MainWindow()
{
InitializeComponent();
ObservableCollection<Person> people = new ObservableCollection<Person>
{
new Person { Name = "John", Age = 30 },
new Person { Name = "Jane", Age = 25 },
new Person { Name = "Mark", Age = 40 }
};
ICollectionView collectionView = CollectionViewSource.GetDefaultView(people);
// Filtering: Show only people older than 30
collectionView.Filter = item => (item as Person).Age > 30;
myListBox.ItemsSource = collectionView;
}
এখানে:
Filterপ্রোপার্টি দিয়েAge > 30শর্ত দিয়ে ডাটা ফিল্টার করা হয়েছে, যার ফলে শুধু Mark (Age 40) কে দেখানো হবে।
Sorting with CollectionView
CollectionView এর মাধ্যমে ডাটা সোর্টিংও করা যেতে পারে। ICollectionView.SortDescriptions ব্যবহার করে আপনি ডাটার সজ্জা (sorting) করতে পারেন।
উদাহরণ:
public MainWindow()
{
InitializeComponent();
ObservableCollection<Person> people = new ObservableCollection<Person>
{
new Person { Name = "John", Age = 30 },
new Person { Name = "Jane", Age = 25 },
new Person { Name = "Mark", Age = 40 }
};
ICollectionView collectionView = CollectionViewSource.GetDefaultView(people);
// Sorting by Age in ascending order
collectionView.SortDescriptions.Add(new SortDescription("Age", ListSortDirection.Ascending));
myListBox.ItemsSource = collectionView;
}
এখানে:
SortDescriptionsব্যবহার করে Age প্রপার্টি অনুযায়ী ডাটাকে সজ্জিত করা হয়েছে (ascending order)।
Grouping with CollectionView
CollectionView এর মাধ্যমে ডাটা গ্রুপিংও করা যায়। ICollectionView.GroupDescriptions প্রপার্টি ব্যবহার করে আপনি ডাটাকে এক বা একাধিক ক্যাটেগরির মধ্যে গ্রুপ করতে পারেন।
উদাহরণ:
public MainWindow()
{
InitializeComponent();
ObservableCollection<Person> people = new ObservableCollection<Person>
{
new Person { Name = "John", Age = 30 },
new Person { Name = "Jane", Age = 25 },
new Person { Name = "Mark", Age = 40 }
};
ICollectionView collectionView = CollectionViewSource.GetDefaultView(people);
// Grouping by Age
collectionView.GroupDescriptions.Add(new PropertyGroupDescription("Age"));
myListBox.ItemsSource = collectionView;
}
এখানে:
GroupDescriptionsব্যবহার করে Age প্রপার্টি অনুযায়ী ডাটাকে গ্রুপ করা হয়েছে।
Data Filtering with TextBox Input
আপনি TextBox এর ইনপুটের ভিত্তিতে ডাটা ফিল্টার করতে পারেন। এটি সাধারণত ডায়নামিক ফিল্টারিং এর জন্য ব্যবহৃত হয়, যেখানে ইউজার প্রতিবার ইনপুট দেওয়ার সঙ্গে সঙ্গে ডাটা পরিবর্তিত হয়।
উদাহরণ:
<Window x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Filtering Example" Height="300" Width="400">
<StackPanel>
<TextBox Name="FilterTextBox" Width="200" Margin="10"/>
<ListBox Name="myListBox" Width="200" Height="200"/>
</StackPanel>
</Window>
C# Code-behind:
public MainWindow()
{
InitializeComponent();
ObservableCollection<Person> people = new ObservableCollection<Person>
{
new Person { Name = "John", Age = 30 },
new Person { Name = "Jane", Age = 25 },
new Person { Name = "Mark", Age = 40 }
};
ICollectionView collectionView = CollectionViewSource.GetDefaultView(people);
myListBox.ItemsSource = collectionView;
// Filter based on TextBox input
FilterTextBox.TextChanged += (sender, e) =>
{
collectionView.Filter = item => (item as Person).Name.Contains(FilterTextBox.Text);
};
}
এখানে:
- TextBox এর ইনপুটের উপর ভিত্তি করে Name প্রপার্টি ফিল্টার করা হচ্ছে, যার ফলে ইউজার যে নাম টাইপ করবে, সেই নামের সাথে মিল রাখা ডাটা প্রদর্শিত হবে।
সারাংশ
- CollectionView WPF এবং UWP অ্যাপ্লিকেশনে ডাটা প্রদর্শন এবং ম্যানিপুলেশন করার জন্য ব্যবহৃত হয়।
- Data Filtering এর মাধ্যমে আপনি UI তে প্রদর্শিত ডাটাকে নির্দিষ্ট শর্তের উপর ভিত্তি করে ফিল্টার করতে পারেন।
- Sorting এবং Grouping সুবিধার মাধ্যমে ডাটাকে সজ্জিত এবং গ্রুপ করা সম্ভব।
- TextBox Input এর মাধ্যমে ডাটা ডাইনামিকভাবে ফিল্টার করা যায়, যা ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।
এই সব ফিচারগুলো WPF এবং UWP অ্যাপ্লিকেশনগুলোতে ডাটার প্রেজেন্টেশন এবং ফিল্টারিং আরও সুবিধাজনক এবং ইন্টারেকটিভ করে তোলে।
Read more