Data Binding হলো XAML এবং C# (বা অন্যান্য প্রোগ্রামিং ভাষা) এর মধ্যে একটি সংযোগ ব্যবস্থা, যার মাধ্যমে UI উপাদান এবং ডেটার মধ্যে তথ্য বিনিময় করা হয়। Windows Application Development-এ Data Binding ব্যবহৃত হয় UI এর বিভিন্ন উপাদান (যেমন TextBox, Label, ComboBox) এবং ডেটার মধ্যে অটোমেটিক্যালি পরিবর্তন শেয়ার করার জন্য। এতে UI এবং ডেটা মডেল একে অপরের থেকে আলাদা থাকে, যার ফলে অ্যাপ্লিকেশন আরও পরিষ্কার, মেইনটেইনেবল এবং স্কেলেবল হয়।
Data Binding এর সুবিধা
- UI এবং ডেটা আলাদা রাখা: UI এবং ব্যাকএন্ড লজিক (ডেটা) আলাদা রাখা যায়।
- অটোমেটিক আপডেট: ডেটা পরিবর্তিত হলে UI তাতে স্বয়ংক্রিয়ভাবে আপডেট হয় এবং vice versa।
- MVVM প্যাটার্ন সমর্থন: Model-View-ViewModel (MVVM) প্যাটার্নের মাধ্যমে UI এবং লজিক আলাদা করা যায়।
- ডেটা এবং UI এর মধ্যে সম্পর্ক সহজ করা: ব্যবহারকারীর ইনপুট বা ডেটার পরিবর্তন UI তে সরাসরি প্রতিফলিত হয়।
Data Binding এর মৌলিক উপাদান
- Source: ডেটা উৎস (যেমন C# ক্লাস বা মডেল) যা UI উপাদানে প্রদর্শিত হবে।
- Target: UI উপাদান (যেমন TextBox, Label, ComboBox) যা ডেটা প্রদর্শন করবে।
- Binding Path: এটি ডেটার সম্পত্তির নাম, যা UI উপাদানের সাথে সংযুক্ত হয়।
- Binding Mode: ডেটার আপডেটের দিক নির্দেশ করে (OneWay, TwoWay, OneTime)।
Data Binding এর ধরন
১. One-Way Data Binding
এই ধরনের ডেটা বাইন্ডিংয়ে ডেটা শুধুমাত্র Source থেকে Target (UI উপাদান) এ প্রবাহিত হয়। একবার ডেটা পরিবর্তন হলে UI উপাদান তা আপডেট করে, তবে UI থেকে ডেটা পরিবর্তিত হয় না।
উদাহরণ:
<TextBlock Text="{Binding UserName}" />
এখানে, UserName হল ডেটা মডেলের প্রপার্টি যা TextBlock-এ প্রদর্শিত হবে। যখন UserName পরিবর্তিত হবে, তখন TextBlock স্বয়ংক্রিয়ভাবে আপডেট হবে।
২. Two-Way Data Binding
এই ধরনের বাইন্ডিংয়ে Source এবং Target একে অপরের সাথে যোগাযোগ করে। UI উপাদানে করা পরিবর্তন ডেটাতে প্রতিফলিত হয় এবং ডেটাতে পরিবর্তন হলে UI আপডেট হয়।
উদাহরণ:
<TextBox Text="{Binding UserName, Mode=TwoWay}" />
এখানে, ব্যবহারকারী TextBox-এ কিছু ইনপুট দিলে তা UserName প্রপার্টিতে আপডেট হবে এবং UserName প্রপার্টি পরিবর্তিত হলে TextBox-এও তা আপডেট হবে।
৩. One-Time Data Binding
এই ধরনের বাইন্ডিংয়ে Target (UI উপাদান) শুধুমাত্র একবার ডেটার মান নেয় এবং এরপর আর কোনো পরিবর্তন গ্রহণ করে না। এটি সাধারণত কেবল নির্বাচিত ডেটা বা স্থির ডেটা প্রদর্শনের জন্য ব্যবহার করা হয়।
উদাহরণ:
<TextBlock Text="{Binding UserName, Mode=OneTime}" />
এখানে UserName একবার TextBlock-এ সেট হবে এবং এর পরে কোনো পরিবর্তন হবে না।
Data Binding এর প্রপার্টি
- Binding Path: ডেটার গন্তব্যের ক্ষেত্র, উদাহরণস্বরূপ:
{Binding UserName}। - Mode: Data Binding এর প্রকার, যেমন
OneWay,TwoWay,OneTime। - UpdateSourceTrigger: কখন ডেটা উৎস আপডেট হবে তা নির্ধারণ করে (যেমন
PropertyChanged,LostFocusইত্যাদি)। - Converter: Data Binding-এর সাথে ডেটা রূপান্তর করার জন্য ব্যবহৃত হয়। এটি সাধারণত ডেটার ধরন পরিবর্তন করতে ব্যবহৃত হয়।
উদাহরণ:
<TextBox Text="{Binding UserName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
Data Binding এর জন্য C# কোড
Data Binding ব্যবহারের জন্য C#-এ একটি সঠিক ডেটা মডেল তৈরি করা প্রয়োজন। এই মডেলটি INotifyPropertyChanged ইন্টারফেসটি ইমপ্লিমেন্ট করতে পারে, যা UI কে ডেটার পরিবর্তনের কথা জানিয়ে দেয়।
C# কোড উদাহরণ:
public class UserModel : INotifyPropertyChanged
{
private string _userName;
public string UserName
{
get { return _userName; }
set
{
if (_userName != value)
{
_userName = value;
OnPropertyChanged(nameof(UserName));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
XAML এ Data Binding:
<Window DataContext="{Binding RelativeSource={RelativeSource Self}}">
<TextBox Text="{Binding UserName, Mode=TwoWay}" />
</Window>
এখানে, UserModel ক্লাসের UserName প্রপার্টি TextBox এর সাথে বাইন্ড করা হয়েছে, এবং পরিবর্তন হলে UI আপডেট হবে।
উপসংহার
Data Binding হলো XAML এবং C# মধ্যে শক্তিশালী একটি যোগাযোগ পদ্ধতি, যা UI এবং ডেটার মধ্যে এক্সপ্লিসিট সম্পর্ক তৈরি করে। এটি UI ডিজাইনের জন্য খুবই কার্যকরী, কারণ এটি ডেটার পরিবর্তন UI-তে স্বয়ংক্রিয়ভাবে প্রতিফলিত করে এবং অ্যাপ্লিকেশনটিকে আরও মেইনটেইনেবল করে তোলে। One-Way, Two-Way, এবং One-Time বাইন্ডিং-এর মাধ্যমে অ্যাপ্লিকেশন তৈরির সময় ডেটা এবং UI-কে একে অপরের সাথে সুনির্দিষ্টভাবে সংযুক্ত করা যায়।
Read more