Microsoft Technologies Event Handling এবং Custom Routed Events গাইড ও নোট

238

WPF (Windows Presentation Foundation) এ Event Handling এবং Custom Routed Events ব্যবহৃত হয় ইউজার ইন্টারঅ্যাকশন বা অন্যান্য কার্যক্রমের প্রতি প্রতিক্রিয়া (response) জানাতে। WPF ইভেন্ট মডেলটি ডেটা-বাইন্ডিং এবং মডেল-ভিউ-কন্ট্রোল (MVVM) আর্কিটেকচারের সাথে খুব ভালোভাবে কাজ করে, যা আপনাকে আরো নমনীয় এবং কাস্টম ইভেন্ট হ্যান্ডলিং করতে দেয়।


Event Handling in WPF

WPF এ ইভেন্ট হ্যান্ডলিং সাধারণত C# কোডে করা হয়, যেখানে UI উপাদান (যেমন, Button, TextBox, ইত্যাদি) এর উপর নির্দিষ্ট ইভেন্টগুলির জন্য হ্যান্ডলার তৈরি করা হয়।

Basic Event Handling

WPF এ ইভেন্ট হ্যান্ডলিং করার জন্য আপনি সাধারণত ইভেন্ট ডিক্লেয়ার করতে পারেন XAML এ, এবং C# কোডবিহীন শিরোনামে সেই ইভেন্টের জন্য হ্যান্ডলার ডিফাইন করতে পারেন।

উদাহরণ: Button Click Event Handling

<Button Content="Click Me" Click="Button_Click"/>

এখানে:

  • Click ইভেন্টটি Button_Click মেথডের সাথে যুক্ত।

C# কোডে:

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

এখানে:

  • Button_Click মেথডটি ইভেন্ট ট্রিগার হওয়ার পর কল হয়।
  • RoutedEventArgs হল WPF ইভেন্টের আর্গুমেন্ট, যা কন্ট্রোলের ইভেন্টের সাথে সম্পর্কিত তথ্য ধারণ করে।

Routed Events in WPF

WPF এ Routed Events হল ইভেন্ট যা ডিপ লেভেল (UI উপাদান) থেকে শীর্ষ লেভেল (উদাহরণস্বরূপ, প্যানেল বা উইন্ডো) পর্যন্ত বা উল্টে যেতে পারে। Routed Events ত্রুটির কারণে কার্যকরীভাবে উইন্ডো বা প্যানেলের ভিতরে ঘটে এমন ইভেন্টগুলি পরিচালনা করতে সাহায্য করে।

Routed Events তিনটি টাইপে বিভক্ত:

  1. Direct Routed Events: একটি নির্দিষ্ট উপাদানে ট্রিগার হয় এবং সেই উপাদানের ইভেন্ট হ্যান্ডলারকেই প্রভাবিত করে।
  2. Bubbling Routed Events: এটি একটি হায়ারার্কিক্যাল পদ্ধতিতে কাজ করে, অর্থাৎ ইভেন্টটি ইভেন্ট উৎস থেকে শুরু হয়ে, পারেন্ট কন্ট্রোল বা কন্টেইনারে বুদ্বুদ হয়ে (bubble up) চলে যায়।
  3. Tunneling Routed Events: এটি বিপরীতভাবে কাজ করে, অর্থাৎ প্যারেন্ট কন্ট্রোল থেকে চাইল্ড কন্ট্রোলের দিকে ইভেন্টটি "tunnel" হয়।

উদাহরণ: Bubbling Routed Event

<Window x:Class="RoutedEventExample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Routed Event Example" Height="200" Width="300">
    <StackPanel>
        <Button Content="Click Me" Click="Button_Click"/>
    </StackPanel>
</Window>

C# কোডে:

private void Button_Click(object sender, RoutedEventArgs e)
{
    MessageBox.Show("Button clicked and the event bubbled up to the StackPanel");
    e.Handled = true;  // Stops the event from bubbling further up.
}

এখানে:

  • Button_Click ইভেন্টটি Button এ ট্রিগার হয়, এবং RoutedEventArgs দ্বারা এটি e.Handled = true; দিয়ে অবরুদ্ধ (stop) করা হয়, যাতে ইভেন্ট আরও উপরে না যায়।

Custom Routed Events

WPF এ Custom Routed Events তৈরি করা যায় যেগুলি আপনার নিজের কাস্টম ইভেন্ট লজিক প্রয়োগ করতে সাহায্য করে। এটি ইভেন্ট ম্যানেজমেন্টের জন্য অত্যন্ত শক্তিশালী এবং কাস্টম ভ্যালিডেশন বা ইনপুট কন্ট্রোলের জন্য ব্যবহৃত হতে পারে।

Custom Routed Event তৈরি করা

  1. প্রথমে, আপনি একটি কাস্টম রাউটেড ইভেন্ট ডিক্লেয়ার করবেন।
  2. তারপর, সেই ইভেন্টের জন্য RoutedEventArgs তৈরি করতে হবে এবং সেই অনুযায়ী ইভেন্ট হ্যান্ডলারের কোড লিখতে হবে।

উদাহরণ: Custom Routed Event

  1. Custom Routed Event ডিক্লেয়ার করা:
public class CustomButton : Button
{
    // 1. RoutedEvent ডিক্লেয়ার করা
    public static readonly RoutedEvent MyCustomEvent = EventManager.RegisterRoutedEvent(
        "MyCustom", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(CustomButton));

    // 2. EventAdd এবং EventRemove মেথড
    public event RoutedEventHandler MyCustom
    {
        add { AddHandler(MyCustomEvent, value); }
        remove { RemoveHandler(MyCustomEvent, value); }
    }

    // 3. ইভেন্ট ট্রিগার করার জন্য একটি মেথড
    public void TriggerCustomEvent()
    {
        RaiseEvent(new RoutedEventArgs(MyCustomEvent));
    }
}

এখানে:

  • MyCustomEvent হল একটি RoutedEvent যা Bubble কৌশল ব্যবহার করে। অর্থাৎ, এটি ইভেন্টটি উপরের দিকে বুদ্বুদ করবে।
  • TriggerCustomEvent মেথডের মাধ্যমে এই কাস্টম ইভেন্টটি ট্রিগার করা যাবে।
  1. XAML এ কাস্টম ইভেন্ট ব্যবহার করা:
<Window x:Class="RoutedEventExample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:RoutedEventExample"
        Title="Routed Event Example" Height="200" Width="300">
    <Grid>
        <local:CustomButton Name="customButton" Content="Click Me" HorizontalAlignment="Center" VerticalAlignment="Center" MyCustom="CustomButton_MyCustom"/>
    </Grid>
</Window>
  1. C# কোডে কাস্টম ইভেন্ট হ্যান্ডলিং:
private void CustomButton_MyCustom(object sender, RoutedEventArgs e)
{
    MessageBox.Show("Custom Routed Event Triggered!");
}

এখানে:

  • MyCustom নামক কাস্টম রাউটেড ইভেন্ট CustomButton কন্ট্রোলের উপর ইভেন্ট হ্যান্ডলার হিসেবে ব্যবহৃত হয়েছে।
  • যখন TriggerCustomEvent মেথড কল করা হয়, তখন কাস্টম রাউটেড ইভেন্ট ট্রিগার হবে এবং CustomButton_MyCustom ইভেন্ট হ্যান্ডলারটি কাজ করবে।

Conclusion

  • Event Handling WPF এ ব্যবহারকারীর ইন্টারঅ্যাকশনের প্রতি প্রতিক্রিয়া জানাতে ব্যবহৃত হয়।
  • Routed Events ব্যবহারকারীর ইনপুট বা অন্যান্য কার্যক্রমের জন্য ইভেন্টকে প্রোপাগেট করে (বাবলিং এবং টানেলিং), যা UI উপাদানগুলির মধ্যে কার্যকরভাবে যোগাযোগ করতে সাহায্য করে।
  • Custom Routed Events আপনাকে কাস্টম ইভেন্ট তৈরি করতে সহায়তা করে, যা আপনাকে আরও উন্নত কাস্টম লজিক এবং ইভেন্ট ম্যানেজমেন্ট প্রক্রিয়া তৈরি করতে সক্ষম করে।
Content added By
Promotion

Are you sure to start over?

Loading...