WPF Controls এবং User Interaction

Microsoft Technologies - ডব্লিউপিএফ (WPF)
262

WPF (Windows Presentation Foundation) একটি আধুনিক ফ্রেমওয়ার্ক যা উইন্ডোজ ডেক্সটপ অ্যাপ্লিকেশন তৈরি করার জন্য ব্যবহৃত হয়। WPF-এ আপনি UI Controls ব্যবহার করে ইন্টারেক্টিভ এবং সৃজনশীল ইউজার ইন্টারফেস (UI) তৈরি করতে পারেন। এই কন্ট্রোলগুলি ব্যবহারকারীর সঙ্গে অ্যাপ্লিকেশনকে যোগাযোগের জন্য বিভিন্ন পদ্ধতি প্রদান করে। এই টিউটোরিয়ালে, WPF কন্ট্রোলস এবং ইউজার ইন্টারঅ্যাকশন সম্পর্কে বিস্তারিত আলোচনা করা হবে।


WPF Controls (WPF কন্ট্রোলস)

WPF কন্ট্রোলস বিভিন্ন UI উপাদান দিয়ে তৈরি হয়, যা ইউজারের সঙ্গে ইন্টারঅ্যাকশনের জন্য ব্যবহৃত হয়। নিচে WPF-এর কিছু সাধারণ কন্ট্রোল এবং তাদের ব্যবহারের উদাহরণ দেওয়া হলো।

১. Button (বাটন)

Button হলো একটি ইন্টারেক্টিভ কন্ট্রোল যা ইউজারকে কোনো কাজ করতে উৎসাহিত করে (যেমন, ক্লিক করা)। এটি সাধারণত কোনো অ্যাকশন ট্রিগার করতে ব্যবহৃত হয়।

উদাহরণ:

<Button Content="Click Me" Width="100" Height="50" Click="Button_Click"/>
private void Button_Click(object sender, RoutedEventArgs e)
{
    MessageBox.Show("Button Clicked!");
}

২. TextBox (টেক্সটবক্স)

TextBox ইউজারদের কোনো টেক্সট ইনপুট দেওয়ার জন্য ব্যবহৃত হয়। এটি সাধারণত ফর্ম, সার্চ বক্স ইত্যাদিতে ব্যবহৃত হয়।

উদাহরণ:

<TextBox Name="myTextBox" Width="200" Height="30"/>
string inputText = myTextBox.Text;

৩. Label (লেবেল)

Label হলো একটি স্ট্যাটিক কন্ট্রোল যা তথ্য প্রদর্শন করে, তবে এটি ইউজারের সঙ্গে ইন্টারঅ্যাক্ট করে না। এটি সাধারণত টেক্সট বা নির্দেশনা প্রদর্শন করতে ব্যবহৃত হয়।

উদাহরণ:

<Label Content="Enter your name:" Width="200" Height="30"/>

৪. ComboBox (কম্বো বক্স)

ComboBox ইউজারদের একাধিক বিকল্প থেকে একটি নির্বাচন করতে সহায়তা করে। এটি সাধারণত ড্রপডাউন মেনু হিসেবে ব্যবহৃত হয়।

উদাহরণ:

<ComboBox Name="myComboBox" Width="200" Height="30">
    <ComboBoxItem Content="Option 1"/>
    <ComboBoxItem Content="Option 2"/>
    <ComboBoxItem Content="Option 3"/>
</ComboBox>
string selectedOption = (myComboBox.SelectedItem as ComboBoxItem).Content.ToString();

৫. CheckBox (চেকবক্স)

CheckBox ইউজারদের একটি অথবা একাধিক বিকল্প নির্বাচন করার সুযোগ দেয়। এটি সাধারণত সিলেকশন টগল করতে ব্যবহৃত হয়।

উদাহরণ:

<CheckBox Name="myCheckBox" Content="Accept Terms" Width="200" Height="30"/>
bool isChecked = myCheckBox.IsChecked == true;

৬. RadioButton (রেডিও বাটন)

RadioButton সাধারণত একাধিক অপশন থেকে একটি নির্বাচন করতে ব্যবহৃত হয়। রেডিও বাটন সাধারণত একে অপরের সাথে গ্রুপ করা হয়, যাতে একটি সময়ের মধ্যে শুধু একটি অপশন নির্বাচন করা যায়।

উদাহরণ:

<RadioButton Name="option1" Content="Option 1" GroupName="Group1"/>
<RadioButton Name="option2" Content="Option 2" GroupName="Group1"/>
if (option1.IsChecked == true)
{
    // Option 1 selected
}

৭. ListBox (লিস্টবক্স)

ListBox একাধিক আইটেম প্রদর্শন করতে ব্যবহৃত হয়। ইউজার এক বা একাধিক আইটেম নির্বাচন করতে পারে। এটি সাধারণত ফর্ম বা ডায়ালগে ব্যবহৃত হয়।

উদাহরণ:

<ListBox Name="myListBox" Width="200" Height="100">
    <ListBoxItem Content="Item 1"/>
    <ListBoxItem Content="Item 2"/>
    <ListBoxItem Content="Item 3"/>
</ListBox>
string selectedItem = (myListBox.SelectedItem as ListBoxItem).Content.ToString();

User Interaction in WPF (WPF-এ ইউজার ইন্টারঅ্যাকশন)

WPF ইউজারের সাথে ইন্টারঅ্যাকশন করার জন্য বিভিন্ন পদ্ধতি সরবরাহ করে, যেমন ইভেন্ট হ্যান্ডলিং, ডেটা বাইন্ডিং, এবং কমান্ড। এই পদ্ধতিগুলো ইউজার ইন্টারঅ্যাকশনের মধ্যে কার্যকরী সমন্বয় তৈরি করতে সাহায্য করে।

১. Event Handling (ইভেন্ট হ্যান্ডলিং)

WPF কন্ট্রোলগুলো বিভিন্ন ইভেন্ট ট্রিগার করতে পারে, যেমন Click, MouseEnter, KeyDown, ইত্যাদি। এই ইভেন্টগুলোকে কোডে হ্যান্ডেল করা হয়।

উদাহরণ:

<Button Content="Click Me" Width="100" Height="50" Click="Button_Click"/>
private void Button_Click(object sender, RoutedEventArgs e)
{
    // Button clicked, perform action
    MessageBox.Show("Button was clicked!");
}

WPF ইভেন্টগুলি Routed Events হিসেবে কাজ করে, যা ঐতিহ্যগত উইন্ডোজ ইভেন্টের থেকে আলাদা। এগুলি প্রোপাগেট করতে পারে (বাবলা ইভেন্ট, ক্যাপচার ইভেন্ট ইত্যাদি), যা বিশেষভাবে UI কন্ট্রোল এবং উপাদানগুলির মধ্যে ইন্টারঅ্যাকশনের জন্য ব্যবহৃত হয়।

২. Data Binding (ডেটা বাইন্ডিং)

WPF এ ডেটা বাইন্ডিং এর মাধ্যমে UI এবং ডেটা মডেল একে অপরের সাথে সংযুক্ত হয়। যখন ডেটা পরিবর্তিত হয়, তখন UI স্বয়ংক্রিয়ভাবে আপডেট হয়। এটি MVVM (Model-View-ViewModel) প্যাটার্নে বিশেষভাবে কার্যকর।

উদাহরণ:

<TextBox Text="{Binding Name}" Width="200" Height="30"/>
public class Person
{
    public string Name { get; set; }
}
// In the code-behind
DataContext = new Person { Name = "John Doe" };

৩. Commanding (কমান্ডিং)

WPF তে Commands ব্যবহার করে আপনি UI কন্ট্রোলগুলোর কার্যাবলী (যেমন, বাটন ক্লিক) পরিচালনা করতে পারেন। এটি UI এবং লজিককে আলাদা রাখার জন্য ব্যবহৃত হয়।

উদাহরণ:

<Button Command="ApplicationCommands.Copy" Content="Copy" />

Summary (সারাংশ)

WPF কন্ট্রোলস এবং ইউজার ইন্টারঅ্যাকশন ব্যবহারের মাধ্যমে আপনি একটি ইন্টারেকটিভ এবং সৃজনশীল ডেস্কটপ অ্যাপ্লিকেশন তৈরি করতে পারেন। WPF তে ইউজার ইন্টারঅ্যাকশন বেশ শক্তিশালী, যেখানে ইভেন্ট হ্যান্ডলিং, ডেটা বাইন্ডিং এবং কমান্ডিং ব্যবহারের মাধ্যমে UI এবং লজিকের মধ্যে সঠিক সমন্বয় তৈরি করা যায়। এর ফলে অ্যাপ্লিকেশন আরও পরিষ্কার, রক্ষণাবেক্ষণযোগ্য, এবং ইউজার-ফ্রেন্ডলি হয়।

Content added By

বেসিক Controls (Button, TextBox, ComboBox, ListBox)

149

XAML (eXtensible Application Markup Language) ব্যবহার করে WPF (Windows Presentation Foundation) অ্যাপ্লিকেশন তৈরি করার সময় বিভিন্ন ধরনের বেসিক কন্ট্রোল ব্যবহৃত হয়। এই কন্ট্রোলগুলো অ্যাপ্লিকেশনের ইন্টারফেসে ইউজারের ইনপুট নিতে এবং তাদেরকে বিভিন্ন আউটপুট প্রদর্শন করতে সাহায্য করে।

নিচে Button, TextBox, ComboBox, এবং ListBox কন্ট্রোলগুলোর ব্যবহার এবং বৈশিষ্ট্য ব্যাখ্যা করা হলো।


১. Button (বাটন)

Button কন্ট্রোলটি একটি সাধারণ ইন্টারফেস উপাদান যা ইউজারকে একটি অ্যাকশন সম্পাদন করতে সক্ষম করে, যেমন কোনো কমান্ড কার্যকর করা (যেমন ক্লিক করা)।

Button এর বৈশিষ্ট্য (Properties):

  • Content: বাটনের ভিতরের টেক্সট বা ইমেজ।
  • Width, Height: বাটনের আকার নির্ধারণ করে।
  • Click: বাটন ক্লিক হলে ট্রিগার হওয়া ইভেন্ট।

Button এর উদাহরণ (Example):

<Button Content="Click Me" Width="100" Height="50" Click="Button_Click"/>

এই উদাহরণে, "Click Me" লেখা একটি বাটন তৈরি হবে, যার আকার হবে 100x50 এবং "Button_Click" নামক C# কোডে লেখা ইভেন্ট হ্যান্ডলারটি বাটন ক্লিক হলে ট্রিগার হবে।


২. TextBox (টেক্সটবক্স)

TextBox কন্ট্রোলটি ইউজারের ইনপুট নেওয়ার জন্য ব্যবহৃত হয়। এটি এক বা একাধিক লাইনের টেক্সট শো করার জন্য ব্যবহৃত হয়।

TextBox এর বৈশিষ্ট্য (Properties):

  • Text: টেক্সটবক্সের ভিতরের প্রদর্শিত টেক্সট।
  • Width, Height: টেক্সটবক্সের আকার।
  • MaxLength: সর্বাধিক সংখ্যক ক্যারেক্টার যা টেক্সটবক্সে প্রবেশ করা যেতে পারে।

TextBox এর উদাহরণ (Example):

<TextBox Width="200" Height="30" Text="Enter your name"/>

এই উদাহরণে, একটি টেক্সটবক্স তৈরি হবে যেখানে "Enter your name" টেক্সট প্রাথমিকভাবে থাকবে। ইউজার এখানে টেক্সট ইনপুট করতে পারবে।


৩. ComboBox (কম্বোবক্স)

ComboBox কন্ট্রোলটি একটি ড্রপডাউন লিস্ট হিসেবে কাজ করে যেখানে ইউজার নির্দিষ্ট অপশন থেকে একটি নির্বাচন করতে পারে। এটি ব্যবহারকারীদের একটি নির্দিষ্ট সংখ্যক অপশন থেকে বাছাই করার সুযোগ দেয়।

ComboBox এর বৈশিষ্ট্য (Properties):

  • ItemsSource: ড্রপডাউন তালিকা থেকে প্রদর্শিত আইটেমগুলোর উৎস।
  • SelectedItem: নির্বাচিত আইটেম।
  • Width, Height: কম্বোবক্সের আকার।

ComboBox এর উদাহরণ (Example):

<ComboBox Width="200" Height="30">
    <ComboBoxItem>Option 1</ComboBoxItem>
    <ComboBoxItem>Option 2</ComboBoxItem>
    <ComboBoxItem>Option 3</ComboBoxItem>
</ComboBox>

এই উদাহরণে, একটি কম্বোবক্স তৈরি হবে যার মধ্যে তিনটি অপশন থাকবে: Option 1, Option 2, এবং Option 3। ইউজার যে কোনো একটি অপশন নির্বাচন করতে পারবে।


৪. ListBox (লিস্টবক্স)

ListBox কন্ট্রোলটি একটি লিস্টের মাধ্যমে বিভিন্ন আইটেম প্রদর্শন করতে ব্যবহৃত হয়। এটি ইউজারকে একটি লিস্ট থেকে এক বা একাধিক আইটেম নির্বাচন করার সুযোগ দেয়।

ListBox এর বৈশিষ্ট্য (Properties):

  • ItemsSource: লিস্টবক্সের মধ্যে প্রদর্শিত আইটেমের উৎস।
  • SelectedItem: নির্বাচিত আইটেম।
  • MultiSelect: একাধিক আইটেম নির্বাচন করা সম্ভব কিনা।

ListBox এর উদাহরণ (Example):

<ListBox Width="200" Height="100">
    <ListBoxItem>Item 1</ListBoxItem>
    <ListBoxItem>Item 2</ListBoxItem>
    <ListBoxItem>Item 3</ListBoxItem>
</ListBox>

এই উদাহরণে, একটি লিস্টবক্স তৈরি হবে, যার মধ্যে তিনটি আইটেম থাকবে: Item 1, Item 2, এবং Item 3। ইউজার যে কোনো একটি আইটেম নির্বাচন করতে পারবে।


সারাংশ (Summary)

  • Button: ইউজারকে একটি অ্যাকশন বা কমান্ড সম্পাদন করতে সক্ষম করে।
  • TextBox: ইউজার থেকে টেক্সট ইনপুট নেয়।
  • ComboBox: ইউজারকে ড্রপডাউন থেকে একটি অপশন নির্বাচন করার সুযোগ দেয়।
  • ListBox: ইউজারকে একটি লিস্ট থেকে এক বা একাধিক আইটেম নির্বাচন করার সুযোগ দেয়।

এই বেসিক কন্ট্রোলগুলো WPF অ্যাপ্লিকেশন তৈরিতে খুবই গুরুত্বপূর্ণ এবং এগুলোর মাধ্যমে আপনি ইউজারের ইন্টারফেস তৈরি এবং ইন্টারঅ্যাকশন সহজেই সঞ্চালন করতে পারবেন।

Content added By

Control Events এবং Routed Events

175

Control Events এবং Routed Events হল WPF (Windows Presentation Foundation) অ্যাপ্লিকেশনের দুটি প্রধান ইভেন্ট সিস্টেম, যা ইউজার ইন্টারফেসে (UI) ইন্টারঅ্যাকশন পরিচালনা করে। যদিও উভয়েরই লক্ষ্য একই (ইউজারের ইনপুট বা অ্যাকশন অনুযায়ী অ্যাপ্লিকেশনে প্রতিক্রিয়া সৃষ্টি করা), তবে তাদের কাজের পদ্ধতি এবং প্রক্রিয়া ভিন্ন। এই দুটি ইভেন্টের মধ্যে পার্থক্য এবং কিভাবে এগুলো কাজ করে তা বোঝা অত্যন্ত গুরুত্বপূর্ণ।


Control Events

Control Events হল সাধারণ ইভেন্ট সিস্টেম, যা নির্দিষ্ট একটি কন্ট্রোলের উপর নির্ভর করে। অর্থাৎ, একটি কন্ট্রোল (যেমন বাটন, টেক্সটবক্স) সরাসরি একটি ইভেন্টের মাধ্যমে কাজ করে এবং শুধুমাত্র সেই কন্ট্রোলের মধ্যে ঘটে।

Control Events এর বৈশিষ্ট্য (Features of Control Events)

  • নির্দিষ্ট কন্ট্রোলের জন্য: এই ইভেন্টটি শুধুমাত্র একটি নির্দিষ্ট কন্ট্রোলের ওপর ঘটে, যেমন বাটনে ক্লিক, টেক্সটবক্সে টাইপ করা, ইত্যাদি।
  • সাধারণভাবে ব্যবহার হয়: Control Events সাধারণত ইউজারের ইনপুটের উপর ভিত্তি করে চলে, যেমন ক্লিক, টাইপ, পরিবর্তন ইত্যাদি।
  • কোডের মাধ্যমে ইভেন্ট হ্যান্ডলিং: Control Event হ্যান্ডলারটি সাধারণত C# বা VB.NET কোডে ডিফাইন করা হয় এবং একটি নির্দিষ্ট কন্ট্রোলের জন্য সেট করা হয়।

Control Event এর উদাহরণ (Example of Control Event)

উদাহরণস্বরূপ, একটি বাটন ক্লিক করার জন্য Control Event:

MainWindow.xaml:

<Window x:Class="WPFApplication.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Control Event Example" Height="350" Width="525">
    <Grid>
        <Button Content="Click Me" HorizontalAlignment="Left" VerticalAlignment="Top" Width="100" Height="50" Click="Button_Click"/>
    </Grid>
</Window>

MainWindow.xaml.cs:

using System.Windows;

namespace WPFApplication
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

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

এখানে Button_Click একটি Control Event যেটি শুধুমাত্র বাটনটি ক্লিক করার পর কার্যকর হবে।


Routed Events

Routed Events হল একটি বিশেষ ইভেন্ট সিস্টেম যা ইভেন্ট বুবলিং এবং ইভেন্ট ক্যাপচারিং নামে দুটি পদ্ধতির মাধ্যমে কন্ট্রোলের মধ্যে ইভেন্ট পারস্পরিক যোগাযোগ করতে সাহায্য করে। এটি একটি ইভেন্টকে এক কন্ট্রোল থেকে অন্য কন্ট্রোলে পাঠানোর জন্য ব্যবহৃত হয়। WPF-এ Routed Events ব্যবহার করার মাধ্যমে আপনি একটি ইভেন্টকে বাবল (Bubbling) বা ক্যাপচার (Capturing) করতে পারেন, যা ইভেন্টের প্রেরণ ও গ্রহণের প্রক্রিয়াকে প্রভাবিত করে।

Routed Events এর বৈশিষ্ট্য (Features of Routed Events)

  • বাবলিং এবং ক্যাপচারিং: Routed Events দুটি পদ্ধতিতে কাজ করে:
    • Bubbling: ইভেন্টটি উপরের দিকে চলে (যেমন, একটি বাটনে ক্লিক হলে ইভেন্টটি তার প্যারেন্ট কন্ট্রোল পর্যন্ত চলে যেতে পারে)।
    • Capturing: ইভেন্টটি নিচের দিকে চলে (যেমন, প্যারেন্ট কন্ট্রোল থেকে সবার আগে ইভেন্টটি চাইল্ড কন্ট্রোলে পাঠানো হয়)।
  • ডিপেন্ডেন্ট কন্ট্রোলের ইভেন্ট শেয়ারিং: এই ধরনের ইভেন্ট কন্ট্রোলের শ্রেণীতে বংশগতভাবে শেয়ার করা যায় এবং কন্ট্রোলের মধ্যে ইভেন্টের কার্যাবলী একে অপরকে প্রভাবিত করতে পারে।
  • Multiple Handlers: একটি Routed Event-এ একাধিক হ্যান্ডলার থাকতে পারে, এবং সেগুলো নির্ধারিত পর্যায়ে ট্রিগার হতে পারে (যেমন, Bubbling বা Capturing পর্যায়ে)।

Routed Event এর উদাহরণ (Example of Routed Event)

উদাহরণস্বরূপ, Button কন্ট্রোলের একটি Routed Event ব্যবহার করা হচ্ছে:

MainWindow.xaml:

<Window x:Class="WPFApplication.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Routed Event Example" Height="350" Width="525">
    <Grid MouseDown="Grid_MouseDown">
        <Button Content="Click Me" HorizontalAlignment="Left" VerticalAlignment="Top" Width="100" Height="50"/>
    </Grid>
</Window>

MainWindow.xaml.cs:

using System.Windows;

namespace WPFApplication
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Grid_MouseDown(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Grid MouseDown Event Triggered!");
        }
    }
}

এখানে Grid_MouseDown একটি Routed Event হিসাবে ব্যবহৃত হয়েছে। যখন ইউজার গ্রিডের উপর ক্লিক করবে, ইভেন্টটি গ্রিডের জন্য কাজ করবে, কিন্তু যেহেতু এটি Bubbling ইভেন্ট, এটি গ্রিডের প্যারেন্ট কন্ট্রোলের উপরেও কাজ করতে পারে।


Control Events এবং Routed Events এর মধ্যে পার্থক্য (Differences Between Control Events and Routed Events)

FeatureControl EventsRouted Events
Scopeনির্দিষ্ট কন্ট্রোলের জন্য প্রযোজ্যকন্ট্রোলের হায়ারার্কিতে ইভেন্ট চালাতে পারে (Bubbling বা Capturing)
Event Propagationএক কন্ট্রোলের মধ্যে সীমাবদ্ধইভেন্টটি বাবা থেকে সন্তানের দিকে (Bubbling) বা সন্তানের থেকে বাবা (Capturing) হতে পারে
Event Handlingসাধারণত C# কোডের মাধ্যমে সরাসরি হ্যান্ডল করা হয়হ্যান্ডলিং পদ্ধতি নির্ভর করে ইভেন্ট প্রোপাগেশন পদ্ধতির উপর
Flexibilityকম ফ্লেক্সিবল—এটি শুধু কন্ট্রোলের জন্য থাকেউচ্চ ফ্লেক্সিবল—একাধিক কন্ট্রোল ইভেন্টটি শেয়ার করতে পারে

সারাংশ (Summary)

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

WPF অ্যাপ্লিকেশন ডেভেলপমেন্টে Routed Events সাধারণত Control Events এর চেয়ে বেশি ব্যবহৃত হয়, কারণ এটি ইভেন্ট ম্যানেজমেন্টে আরো নমনীয়তা এবং ফ্লেক্সিবিলিটি প্রদান করে।

Content added By

Input Control (Slider, PasswordBox, DatePicker)

181

WPF (Windows Presentation Foundation) একটি শক্তিশালী ইউজার ইন্টারফেস ফ্রেমওয়ার্ক যা বিভিন্ন ধরনের ইনপুট কন্ট্রোল প্রদান করে। এই কন্ট্রোলগুলো ব্যবহারকারীর ইনপুট সংগ্রহ করতে সহায়তা করে এবং তাদের ডেটা কন্ট্রোল এবং প্রদর্শনের জন্য উপযুক্ত উপায় প্রদান করে। তিনটি গুরুত্বপূর্ণ ইনপুট কন্ট্রোল হচ্ছে Slider, PasswordBox, এবং DatePicker। এই কন্ট্রোলগুলো ইউজারের বিভিন্ন ধরনের ইনপুট গ্রহণ করার জন্য ব্যবহৃত হয়।


১. Slider কন্ট্রোল (Slider Control)

Slider কন্ট্রোলটি একটি ইনপুট কন্ট্রোল যা ব্যবহারকারীকে একটি নির্দিষ্ট মান নির্বাচন করতে সহায়তা করে, সাধারণত একটি পরিসীমার মধ্যে। এটি একটি স্লাইডিং বার যেখানে ব্যবহারকারী তাদের পছন্দ অনুযায়ী মান পরিবর্তন করতে পারেন।

Slider কন্ট্রোলের উদাহরণ (Example of Slider Control)

<Slider Name="volumeSlider" Minimum="0" Maximum="100" Value="50" TickFrequency="5" IsSnapToTickEnabled="True" Width="200"/>
<TextBlock Text="Volume: 50" Name="volumeLabel" VerticalAlignment="Top" Margin="0,50,0,0"/>

উপরে দেওয়া উদাহরণে:

  • Minimum এবং Maximum অ্যাট্রিবিউট দুটি স্লাইডারের পরিসীমা নির্ধারণ করে (0 থেকে 100)।
  • Value অ্যাট্রিবিউট স্লাইডারের প্রাথমিক মান সেট করে।
  • TickFrequency মানটি স্লাইডারের টিক মার্কের মাঝে ফাঁকা স্থান নির্ধারণ করে।
  • IsSnapToTickEnabled অ্যাট্রিবিউটটি নির্ধারণ করে যে স্লাইডারটি টিক মার্কগুলোর সাথে স্ন্যাপ হবে কিনা।

C# কোড:

private void volumeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
    volumeLabel.Text = "Volume: " + volumeSlider.Value.ToString();
}

এই কোডটি স্লাইডার মান পরিবর্তন হলে TextBlock এর টেক্সট আপডেট করবে।


২. PasswordBox কন্ট্রোল (PasswordBox Control)

PasswordBox কন্ট্রোলটি এমন একটি ইনপুট কন্ট্রোল যা ব্যবহারকারীর পাসওয়ার্ড অথবা সংবেদনশীল তথ্য ইনপুট করতে ব্যবহৃত হয়। এই কন্ট্রোলের মূল বৈশিষ্ট্য হলো, এটি ইনপুটted টেক্সটকে আকাশী ডট (•) বা অন্য কোনো চিহ্নে প্রদর্শন করে যাতে নিরাপত্তা বজায় থাকে।

PasswordBox কন্ট্রোলের উদাহরণ (Example of PasswordBox Control)

<PasswordBox Name="passwordBox" Width="200" Height="30" Margin="10"/>
<TextBlock Name="passwordLabel" Text="Enter your password:" VerticalAlignment="Top" Margin="10,40,0,0"/>

C# কোড:

private void passwordBox_PasswordChanged(object sender, RoutedEventArgs e)
{
    string enteredPassword = passwordBox.Password;
    // Password এ যে মানটি ইনপুট হয়েছে তা ব্যবহার করতে পারবেন
}

এখানে:

  • PasswordBox কন্ট্রোলটি ব্যবহারকারী পাসওয়ার্ড ইনপুট করার জন্য ব্যবহার করা হয়।
  • Password প্রপার্টি ব্যবহারকারীর ইনপুটted পাসওয়ার্ড প্রদান করে।

৩. DatePicker কন্ট্রোল (DatePicker Control)

DatePicker কন্ট্রোলটি একটি ডেটা ইনপুট কন্ট্রোল যা ব্যবহারকারীকে একটি নির্দিষ্ট তারিখ নির্বাচন করতে দেয়। এটি একটি ক্যালেন্ডার প্রদর্শন করে এবং ব্যবহারকারী তারিখটি নির্বাচন করতে পারেন। এটি খুবই কার্যকরী যখন ব্যবহারকারীকে তারিখ নির্বাচন করতে হয় (যেমন, জন্মতারিখ, বুকিং ডেট ইত্যাদি)।

DatePicker কন্ট্রোলের উদাহরণ (Example of DatePicker Control)

<DatePicker Name="datePicker" Width="200" Height="30" SelectedDate="2024-11-30"/>
<TextBlock Name="dateLabel" Text="Select a Date" VerticalAlignment="Top" Margin="0,40,0,0"/>

এখানে:

  • SelectedDate অ্যাট্রিবিউটটি প্রাথমিকভাবে একটি তারিখ নির্বাচন করে।
  • Width এবং Height অ্যাট্রিবিউটগুলি কন্ট্রোলটির আকার নির্ধারণ করে।

C# কোড:

private void datePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
    DateTime selectedDate = (DateTime)datePicker.SelectedDate;
    dateLabel.Text = "Selected Date: " + selectedDate.ToString("yyyy-MM-dd");
}

এই কোডটি DatePicker কন্ট্রোলের মাধ্যমে নির্বাচিত তারিখটি TextBlock এ প্রদর্শন করবে।


সারাংশ (Summary)

WPF এ Slider, PasswordBox, এবং DatePicker কন্ট্রোলগুলো ইনপুট সংগ্রহের জন্য খুবই কার্যকরী।

  • Slider কন্ট্রোলটি ব্যবহারকারীর পছন্দ অনুযায়ী একটি মান নির্বাচন করতে সহায়তা করে।
  • PasswordBox কন্ট্রোলটি ব্যবহারকারীর পাসওয়ার্ড ইনপুট নিরাপদভাবে গ্রহণ করে।
  • DatePicker কন্ট্রোলটি ব্যবহারকারীর জন্য একটি তারিখ নির্বাচন করতে সহজ করে তোলে।

এই কন্ট্রোলগুলোর মাধ্যমে আপনি ইউজার ইন্টারফেসে আরও সমৃদ্ধ, নিরাপদ, এবং সহজে ব্যবহারযোগ্য ইনপুট ফিচার যুক্ত করতে পারেন।

Content added By

Content Control এবং Data Binding

213

Content Control এবং Data Binding WPF (Windows Presentation Foundation) অ্যাপ্লিকেশন ডেভেলপমেন্টের দুটি গুরুত্বপূর্ণ ফিচার। এগুলোর মাধ্যমে ইউজার ইন্টারফেস তৈরি করা সহজ হয়, এবং ডেটার সাথে UI উপাদানগুলোর সংযোগ স্থাপন করা যায়। WPF তে Content Control এবং Data Binding ব্যবহারের মাধ্যমে আপনি আরও ডাইনামিক এবং কার্যকর অ্যাপ্লিকেশন তৈরি করতে পারেন।


Content Control

Content Control WPF এর একটি বিশেষ ধরনের কন্ট্রোল যা যে কোনো UI কন্ট্রোলের কন্টেন্ট বা উপাদান ধারণ করতে পারে। এর মানে হলো, আপনি একটি ContentControl এর মধ্যে যেকোনো ধরনের কন্টেন্ট (যেমন একটি টেক্সট, ইমেজ, বাটন, বা অন্য কন্ট্রোল) রাখতে পারেন এবং এটি সেই কন্টেন্টকে ডিসপ্লে করবে।

ContentControl এর বৈশিষ্ট্য (Features of ContentControl)

  • Dynamic Content:
    ContentControl আপনি যে কোনো ধরনের কন্টেন্ট (টেক্সট, কন্ট্রোল, ইমেজ, ইত্যাদি) রাখতে পারেন। এটি UI কন্ট্রোলের ভেতরে কন্টেন্ট পরিবর্তন করতে সক্ষম করে, যেমন ডায়ালগ উইন্ডোতে বিভিন্ন ধরনের কন্টেন্ট পরিবর্তন করা।
  • Template:
    ContentControl কন্ট্রোলের ভিতরের কন্টেন্ট পরিবর্তন করতে Template ব্যবহার করা যায়, যাতে একই কন্ট্রোলের ভিন্ন ভিন্ন লুক তৈরি করা যায়।
  • Common Controls:
    কিছু সাধারণ কন্ট্রোল যেমন Button, Label, Frame, GroupBox ইত্যাদি ContentControl এর অন্তর্গত, যেগুলো নিজের ভিতরে কন্টেন্ট ধারণ করতে পারে।

ContentControl এর উদাহরণ (Example of ContentControl)

<Window x:Class="WPFApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Content Control Example" Height="350" Width="525">
    <Grid>
        <ContentControl>
            <Button Content="Click Me" Width="100" Height="50"/>
        </ContentControl>
    </Grid>
</Window>

এখানে, ContentControl এর মধ্যে একটি বাটন রাখা হয়েছে। এর মানে হলো, ContentControl কোনো কন্ট্রোলের কন্টেন্ট হিসাবে Button কন্ট্রোলটি ধারণ করছে।


Data Binding

Data Binding হল WPF এর একটি শক্তিশালী বৈশিষ্ট্য যা UI কন্ট্রোল এবং ডেটা মডেলের মধ্যে সংযোগ স্থাপন করে। এর মাধ্যমে আপনি UI এবং ডেটার মধ্যে তথ্য আদান-প্রদান করতে পারেন। Data Binding ব্যবহার করার মাধ্যমে UI এবং ডেটা মডেল একে অপরের সাথে অটোমেটিক্যালি সিঙ্ক্রোনাইজ থাকে।

Data Binding এর বৈশিষ্ট্য (Features of Data Binding)

  • One-Way Binding:
    ডেটা কেবল source থেকে target (UI কন্ট্রোল) এ যাবে, অর্থাৎ UI কন্ট্রোল ডেটার পরিবর্তন দেখবে, কিন্তু UI কন্ট্রোলের মাধ্যমে ডেটা মডেল পরিবর্তিত হবে না।
  • Two-Way Binding:
    UI কন্ট্রোল এবং ডেটা মডেল উভয়ের মধ্যে ডেটা পরিবর্তন হতে পারে। উদাহরণস্বরূপ, যদি একটি টেক্সটবক্সের ভিতরে ডেটা পরিবর্তন হয়, তাহলে সেই পরিবর্তন ডেটা মডেলেও প্রতিফলিত হবে।
  • Command Binding:
    আপনি UI কন্ট্রোলের ইভেন্টগুলোকে কমান্ডের সাথে বাইন্ড করতে পারেন। উদাহরণস্বরূপ, একটি বাটনের ক্লিক ইভেন্ট ডেটা মডেল থেকে একটি কমান্ডের মাধ্যমে কার্যকর হতে পারে।
  • Binding Expressions:
    WPF এ Data Binding করতে Binding Expressions ব্যবহার করা হয়। একে Path (যে প্রপার্টি বা ফিল্ডটি বাইন্ড করতে চান) এবং Mode (One-Way, Two-Way ইত্যাদি) সহ কনফিগার করা হয়।

Data Binding এর উদাহরণ (Example of Data Binding)

ধরা যাক, একটি TextBox এর টেক্সট ডেটা মডেলের সাথে বাইন্ড করতে চান:

MainWindow.xaml:

<Window x:Class="WPFApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Data Binding Example" Height="350" Width="525">
    <Grid>
        <TextBox Text="{Binding Name}" Width="200" Height="30"/>
    </Grid>
</Window>

MainWindow.xaml.cs (C# Code Behind):

using System.Windows;

namespace WPFApp
{
    public partial class MainWindow : Window
    {
        public string Name { get; set; }

        public MainWindow()
        {
            InitializeComponent();
            Name = "John Doe";
            DataContext = this; // Set the data context for binding
        }
    }
}

এখানে:

  • TextBox এর Text প্রপার্টি Name প্রপার্টির সাথে বাইন্ড করা হয়েছে।
  • C# কোডে DataContext সেট করা হয়েছে, যাতে Name প্রপার্টি UI কন্ট্রোলের সাথে বাইন্ড হতে পারে।
  • যখন Name প্রপার্টি পরিবর্তিত হবে, তখন TextBox এর টেক্সট অটোমেটিক্যালি আপডেট হবে।

ContentControl এবং Data Binding একসাথে ব্যবহার

এখন, যদি আপনি ContentControl এর মাধ্যমে Data Binding ব্যবহার করতে চান, তাহলে নিচের মত কোড করতে পারেন:

<Window x:Class="WPFApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Content Control and Data Binding" Height="350" Width="525">
    <Grid>
        <ContentControl Content="{Binding Name}" />
    </Grid>
</Window>

এখানে, ContentControl এর Content প্রপার্টি Name প্রপার্টির সাথে বাইন্ড করা হয়েছে। এর মানে হলো, যখন Name পরিবর্তিত হবে, তখন ContentControl এর ভিতরে থাকা কন্টেন্ট (যেমন টেক্সট) স্বয়ংক্রিয়ভাবে আপডেট হবে।


সারাংশ (Summary)

  • Content Control হল এমন একটি কন্ট্রোল যা ইউজার ইন্টারফেসে যেকোনো ধরনের কন্টেন্ট ধারণ করতে পারে, এবং এটি বিভিন্ন কন্ট্রোল বা উপাদান দিয়ে কাস্টমাইজড হতে পারে।
  • Data Binding WPF তে UI কন্ট্রোল এবং ডেটা মডেলের মধ্যে তথ্য সংযোগ স্থাপন করে, যা অ্যাপ্লিকেশনের ইউজার ইন্টারফেসকে ডেটার সাথে সিঙ্ক্রোনাইজড রাখতে সহায়তা করে।

এগুলি WPF এর শক্তিশালী বৈশিষ্ট্য যা আপনাকে ডাইনামিক, ইন্টারেকটিভ, এবং কার্যকর অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে।

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

Are you sure to start over?

Loading...