INotifyPropertyChanged Interface এবং ObservableCollection

Mobile App Development - ডট নেট এমআইইউআই (.NET MAUI) - State Management এবং Data Binding
231

INotifyPropertyChanged Interface এবং ObservableCollection উভয়ই .NET MAUI, Xamarin এবং অন্যান্য .NET অ্যাপ্লিকেশনে ডেটা-বাইন্ডিং এবং ডেটা ম্যানিপুলেশনের ক্ষেত্রে গুরুত্বপূর্ণ ভূমিকা পালন করে। এগুলি মূলত ব্যবহারকারী ইন্টারফেস (UI) এবং ডেটা মডেল বা ভিউমডেল এর মধ্যে সিঙ্ক্রোনাইজেশন বজায় রাখতে সাহায্য করে।

INotifyPropertyChanged Interface:

INotifyPropertyChanged একটি ইন্টারফেস যা একটি ক্লাসের মধ্যে প propriétés পরিবর্তন হওয়ার সময় UI বা অন্যান্য সাবস্ক্রাইবারদের জানাতে ব্যবহৃত হয়। যখন একটি প্রপার্টি পরিবর্তিত হয়, তখন PropertyChanged ইভেন্ট ট্রিগার করা হয় যা UI বা ডেটা বাইন্ডিংকে সতর্ক করে, যাতে UI আপডেট করতে পারে।

ব্যবহার:

  • যখন আপনি একটি ডেটা মডেল বা ভিউমডেল তৈরি করেন, আপনি এই ইন্টারফেসটি ইমপ্লিমেন্ট করেন যাতে ডেটার পরিবর্তন UI তে প্রতিফলিত হতে পারে।
  • এটি UI-তে রিয়েল-টাইম আপডেট এবং ডেটা-বাইন্ডিং ইভেন্ট ট্রিগার করার জন্য গুরুত্বপূর্ণ।

উদাহরণ:

using System;
using System.ComponentModel;

namespace MauiApp
{
    public class Person : INotifyPropertyChanged
    {
        private string name;

        public string Name
        {
            get { return name; }
            set
            {
                if (name != value)
                {
                    name = value;
                    OnPropertyChanged(nameof(Name)); // Property change notification
                }
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        // OnPropertyChanged method triggers the PropertyChanged event
        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

এখানে, Person ক্লাসটি INotifyPropertyChanged ইন্টারফেসটি ইমপ্লিমেন্ট করেছে এবং যখন Name প্রপার্টি পরিবর্তিত হয়, তখন OnPropertyChanged মেথডের মাধ্যমে PropertyChanged ইভেন্ট ট্রিগার হয়। UI এই পরিবর্তনটি সনাক্ত করবে এবং আপডেট হবে।

ObservableCollection:

ObservableCollection হল একটি জেনেরিক коллекশন যা INotifyCollectionChanged ইন্টারফেসটি ইমপ্লিমেন্ট করে, যার ফলে এটি নিজে থেকে পরিবর্তন শোনাতে পারে। অর্থাৎ, যখন আপনি কোন উপাদান অ্যাড, রিমুভ, বা আপডেট করেন, তখন এটি ডেটা-বাইন্ডিংয়ের মাধ্যমে UI-তে পরিবর্তন জানিয়ে দেয়।

ব্যবহার:

  • ObservableCollection ডেটা ম্যানিপুলেশন এবং রিয়েল-টাইম আপডেটের জন্য ব্যবহার করা হয়। যখন কোন ডেটা সংগ্রহে পরিবর্তন হয়, তখন UI এই পরিবর্তনগুলো দেখতে পায় এবং সেগুলি আপডেট হয়।
  • এটি মূলত List বা ArrayList এর পরিবর্তে ব্যবহৃত হয় যখন আপনি ডেটা ম্যানিপুলেশন করবেন এবং UI-তে সেই পরিবর্তনগুলি সঠিকভাবে প্রতিফলিত করতে চান।

উদাহরণ:

using System.Collections.ObjectModel;

namespace MauiApp
{
    public class MainPageViewModel
    {
        public ObservableCollection<Person> People { get; set; }

        public MainPageViewModel()
        {
            People = new ObservableCollection<Person>
            {
                new Person { Name = "John" },
                new Person { Name = "Jane" }
            };
        }

        public void AddPerson(string name)
        {
            People.Add(new Person { Name = name });
        }

        public void RemovePerson(Person person)
        {
            People.Remove(person);
        }
    }
}

এখানে, ObservableCollection ব্যবহার করা হয়েছে যাতে People নামক একটি তালিকা UI-তে পরিবর্তন হলে তা স্বয়ংক্রিয়ভাবে আপডেট হয়। যখন আমরা নতুন Person যোগ করি বা মুছে ফেলি, তখন UI সেই পরিবর্তনগুলি দেখতে পাবে।

INotifyPropertyChanged এবং ObservableCollection এর মধ্যে সম্পর্ক:

  1. INotifyPropertyChanged সাধারণত একক প্রপার্টি পরিবর্তনের উপর মনিটরিং করে, যেখানে UI কে জানানো হয় যে একটি নির্দিষ্ট প্রপার্টি পরিবর্তিত হয়েছে এবং এটি UI-তে সঠিকভাবে প্রতিফলিত হয়।
  2. ObservableCollection পুরো কালেকশনের পরিবর্তন সনাক্ত করে (যেমন, উপাদান যোগ করা, মুছে ফেলা), এবং UI-তে এই পরিবর্তনগুলি অটোমেটিকভাবে দেখায়।

উদাহরণস্বরূপ: যদি আপনি একটি ObservableCollection এর মধ্যে কিছু উপাদান যোগ বা মুছে ফেলেন এবং সেই উপাদানের কোনো প্রপার্টি পরিবর্তন করেন, তবে INotifyPropertyChanged ইন্টারফেসটি সুনিশ্চিত করবে যে, সেই প্রপার্টির পরিবর্তন UI তে সঠিকভাবে প্রতিফলিত হচ্ছে।

প্রয়োজনীয়তার সারাংশ:

  • INotifyPropertyChanged ক্লাসের প্রপার্টি পরিবর্তনের উপর নজর রাখে এবং UI কে জানায় যে কিছু পরিবর্তন হয়েছে, যাতে UI আপডেট হয়।
  • ObservableCollection ডেটা সংগ্রহের উপাদানগুলির পরিবর্তন দেখায়, যেমন উপাদান যোগ, মুছে ফেলা বা পরিবর্তন হওয়া, এবং সেই পরিবর্তন UI তে দেখায়।

এই দুটি বৈশিষ্ট্য একসাথে ব্যবহার করলে আপনি একটি ডাইনামিক, রিয়েল-টাইম, এবং সিঙ্ক্রোনাইজড UI তৈরি করতে পারেন যেখানে ডেটা মডেল এবং UI এর মধ্যে উপযুক্ত যোগাযোগ স্থাপন হয়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...