Microsoft Technologies Bubbling এবং Tunneling Events গাইড ও নোট

296

WPF (Windows Presentation Foundation) এবং XAML-এ Event Handling দুটি প্রধান ইভেন্ট মডেল অনুসরণ করে: Bubbling এবং Tunneling। এগুলি Event Routing মেকানিজমের অংশ যা ইভেন্টগুলো কিভাবে উপাদান থেকে উপাদানে বা উপাদানের স্তর থেকে স্তরে প্রেরিত হয় তা নির্ধারণ করে।

  • Bubbling Events: ইভেন্টটি তখন উপাদানের ভিতর থেকে বাইরে দিকে চলে, অর্থাৎ ইভেন্টটি প্রথমে ইনভোকিং উপাদানে ঘটে এবং তারপর তার প্যারেন্ট উপাদানগুলোর মাধ্যমে বাইরের দিকে ছড়িয়ে যায়।
  • Tunneling Events: ইভেন্টটি উপরের স্তর থেকে নীচের স্তরের দিকে প্রবাহিত হয়, অর্থাৎ প্রথমে বাইরের উপাদানে ঘটে এবং তারপর ইনভোকিং উপাদানের দিকে ছড়িয়ে যায়।

এই দুই ধরনের ইভেন্ট মডেল ইভেন্ট হ্যান্ডলিং প্রক্রিয়ায় প্রভাব ফেলে এবং ডেভেলপারদের ইভেন্ট কাস্টমাইজ করার সুযোগ দেয়।


Bubbling Events

Bubbling events হল এমন ইভেন্ট যেগুলি প্রাথমিকভাবে একটি UI উপাদানে ঘটার পর, ঐ উপাদানের প্যারেন্ট, গ্র্যান্ডপ্যারেন্ট বা তার উপরের স্তরের উপাদানগুলিতে "বাবল" বা ঊর্ধ্বমুখী হয়ে চলে। এটি মূলত UI element hierarchy অনুসরণ করে, যেখানে ইভেন্টটি সবচেয়ে নিচের উপাদান থেকে শুরু হয়ে উপরের দিকে চলে।

Bubbling Events এর ব্যবহার:

  • যখন আপনি চান যে ইভেন্টটি একটি উপাদান থেকে তার প্যারেন্টে বা উচ্চতর স্তরের উপাদানে পৌঁছাক।
  • এটি সাধারণত UI উপাদানগুলির মধ্যে একটি অভ্যন্তরীণ ইন্টারঅ্যাকশন হতে পারে, যেমন বাটন ক্লিক করলে এটি তার কন্টেইনার বা প্যানেলের মধ্যে পৌঁছাবে।

উদাহরণ:

<Window x:Class="BubblingExample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Bubbling Example" Height="200" Width="300">
    <Grid Background="LightBlue" MouseDown="Grid_MouseDown">
        <Button Content="Click Me" MouseDown="Button_MouseDown"/>
    </Grid>
</Window>
private void Grid_MouseDown(object sender, MouseButtonEventArgs e)
{
    MessageBox.Show("Grid clicked!");
}

private void Button_MouseDown(object sender, MouseButtonEventArgs e)
{
    MessageBox.Show("Button clicked!");
}

এখানে:

  • Button এ ক্লিক করলে, প্রথমে Button_MouseDown ইভেন্ট হ্যান্ডলার ট্রিগার হবে।
  • তারপর, Button_MouseDown ইভেন্টটি Bubbling করে Grid_MouseDown হ্যান্ডলারের মধ্যে পৌঁছাবে। এটি দেখাবে যে, ইভেন্টটি প্রথমে বাচ্চা উপাদানে (Button) এবং তারপর প্যারেন্ট উপাদানে (Grid) চলে গেছে।

Tunneling Events

Tunneling events হল সেই ইভেন্টগুলি যা প্রথমে উপরের স্তরের উপাদানে ঘটতে শুরু করে এবং তারপর একে একে নিচের দিকে প্রেরিত হয়। এই ধরনের ইভেন্টটি "tunneling" নামে পরিচিত কারণ এটি উপরের স্তর থেকে শুরু হয়ে নীচে চলে আসে।

Tunneling Events এর ব্যবহার:

  • যখন আপনি চান যে, প্রথমে উপরের স্তরের উপাদানগুলি ইভেন্টটি গ্রহণ করুক এবং পরে নীচের স্তরের উপাদানগুলো তার মধ্যে প্রক্রিয়া সম্পন্ন করুক।
  • এটি বিশেষত উইন্ডো এবং কন্ট্রোলের মধ্যে নেভিগেশন বা কাস্টম ইভেন্ট হ্যান্ডলিং এর জন্য কার্যকর।

উদাহরণ:

<Window x:Class="TunnelingExample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Tunneling Example" Height="200" Width="300">
    <Grid Background="LightBlue" PreviewMouseDown="Grid_PreviewMouseDown">
        <Button Content="Click Me" PreviewMouseDown="Button_PreviewMouseDown"/>
    </Grid>
</Window>
private void Grid_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
    MessageBox.Show("Grid (Tunneling) clicked!");
}

private void Button_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
    MessageBox.Show("Button (Tunneling) clicked!");
}

এখানে:

  • Button এ ক্লিক করলে, প্রথমে Button_PreviewMouseDown ইভেন্ট হ্যান্ডলার ট্রিগার হবে, যেটি Tunneling ইভেন্ট।
  • তারপর, Tunneling প্রক্রিয়া অনুসরণ করে Grid_PreviewMouseDown হ্যান্ডলারও ট্রিগার হবে। এখানে ইভেন্টটি উপরের স্তর থেকে (Grid) নীচের স্তরের উপাদানে (Button) পৌঁছাবে।

Bubbling এবং Tunneling এর মধ্যে পার্থক্য

AspectBubbling EventsTunneling Events
মৌলিক প্রবাহউপাদান থেকে প্যারেন্ট পর্যন্ত ঊর্ধ্বমুখী।প্যারেন্ট থেকে উপাদান পর্যন্ত নিচের দিকে।
নামকরণইভেন্টের নামের শুরুতে "Preview" থাকে না।ইভেন্টের নামের শুরুতে "Preview" থাকে।
ব্যবহারসাধারণত UI উপাদানগুলো একে অপরের সাথে যোগাযোগ করার জন্য ব্যবহৃত।উইন্ডো বা কন্ট্রোলের মধ্যে পারমিশন চেক করার জন্য ব্যবহৃত।
কেসMouseDown, Click ইত্যাদি।PreviewMouseDown, PreviewKeyDown ইত্যাদি।

সারাংশ

  • Bubbling events ইভেন্টটি UI উপাদান থেকে উপরের স্তরে প্রেরিত হয়।
  • Tunneling events ইভেন্টটি উপরের স্তর থেকে নীচে চলে আসে।
  • Bubbling সাধারণত ইন্টারঅ্যাকশনের জন্য ব্যবহৃত হয়, যেখানে Tunneling প্রাথমিক পর্যায়ে ইভেন্টের প্রক্রিয়া নিয়ন্ত্রণ করার জন্য ব্যবহৃত হয়।
  • Bubbling এবং Tunneling ইভেন্টস গুলোর উপযোগিতা নির্ভর করে কীভাবে আপনি UI উপাদানগুলির মধ্যে ইভেন্ট হ্যান্ডলিং করতে চান, এবং আপনি কীভাবে ইভেন্ট প্রপাগেশন নিয়ন্ত্রণ করতে চান।
Content added By
Promotion

Are you sure to start over?

Loading...