XAML (Extensible Application Markup Language) এ Control Template Override এবং Custom Control Design ব্যবহার করা হয় কাস্টমাইজড UI কন্ট্রোল তৈরি করার জন্য। Control Template এর মাধ্যমে একটি কন্ট্রোলের দেখানোর পদ্ধতি পরিবর্তন করা হয়, এবং Custom Control Design এর মাধ্যমে আপনি সম্পূর্ণ নতুন কন্ট্রোল তৈরি করতে পারেন, যার মধ্যে কন্ট্রোলের লুক এবং অনুভূতি কাস্টমাইজ করা যায়।
Control Template Override:
Control Template হল একটি কন্ট্রোলের ভিজ্যুয়াল উপস্থাপনা যা কন্ট্রোলের লুক এবং অনুভূতি নির্ধারণ করে। Control Template এর মাধ্যমে আপনি একটি কন্ট্রোলের ভিজ্যুয়াল স্টাইল পরিবর্তন করতে পারেন, যেমন কিভাবে বাটন, টেক্সটবক্স, স্লাইডার ইত্যাদি প্রদর্শিত হবে।
Control Template কে override করার মাধ্যমে আপনি ডিফল্ট কন্ট্রোলের ভিজ্যুয়াল স্টাইল পরিবর্তন করতে পারেন, যা কন্ট্রোলের কাজকে পরিবর্তন না করে শুধুমাত্র এর প্রদর্শন বদলায়।
Control Template Override উদাহরণ:
ধরা যাক, আপনি একটি বাটনের ডিজাইন পরিবর্তন করতে চান, যাতে তার ব্যাকগ্রাউন্ড, বর্ডার এবং টেক্সট স্টাইল কাস্টমাইজ করা যায়।
<Window x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Control Template Example" Height="300" Width="300">
<Window.Resources>
<ControlTemplate x:Key="CustomButtonTemplate" TargetType="Button">
<Border Background="RoyalBlue" BorderBrush="Black" BorderThickness="2" CornerRadius="5">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
</ControlTemplate>
</Window.Resources>
<Grid>
<Button Content="Click Me" Width="150" Height="50" Template="{StaticResource CustomButtonTemplate}" />
</Grid>
</Window>
এখানে:
- ControlTemplate এর মাধ্যমে বাটনের ভিজ্যুয়াল স্টাইল কাস্টমাইজ করা হয়েছে।
- Border ব্যবহার করে ব্যাকগ্রাউন্ড, বর্ডার এবং কর্নার রেডিয়াস নির্ধারণ করা হয়েছে।
- ContentPresenter কন্ট্রোলের কন্টেন্ট (যেমন টেক্সট বা ইমেজ) দেখানোর জন্য ব্যবহৃত হয়।
Custom Control Design:
Custom Controls তৈরি করা হয় যদি আপনি একটি কন্ট্রোল তৈরি করতে চান যেটি একটি নির্দিষ্ট কাজের জন্য কাস্টমাইজ করা হয় এবং আপনি কন্ট্রোলের সমস্ত আন্ডারলাইন লজিক এবং ভিজ্যুয়াল স্টাইলের উপর পূর্ণ নিয়ন্ত্রণ রাখতে চান। একটি কাস্টম কন্ট্রোল তৈরি করার জন্য, আপনি সাধারণত একটি নতুন Control ক্লাস তৈরি করেন এবং তার মধ্যে কন্ট্রোলের লজিক এবং ভিজ্যুয়াল উপস্থাপনাকে কাস্টমাইজ করেন।
Custom Control Design উদাহরণ:
ধরা যাক, আপনি একটি কাস্টম কন্ট্রোল তৈরি করতে চান, যা একটি কাস্টম টেক্সটবক্স হবে:
- C# কোড-বিহাইন্ড (Custom Control Class)
public class CustomTextBox : Control
{
static CustomTextBox()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomTextBox), new FrameworkPropertyMetadata(typeof(CustomTextBox)));
}
public CustomTextBox()
{
// Custom control initialization
}
}
এখানে:
- DefaultStyleKeyProperty.OverrideMetadata ব্যবহার করে কন্ট্রোলের DefaultStyle সেট করা হয়েছে।
- Control ক্লাস থেকে ইনহেরিট করা হয়েছে, যাতে কাস্টম কন্ট্রোলের প্রপার্টি এবং লজিক নির্ধারণ করা যায়।
- XAML এ Custom Control ব্যবহার:
<Window x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyApp"
Title="Custom Control Example" Height="300" Width="300">
<Grid>
<local:CustomTextBox Width="200" Height="40" />
</Grid>
</Window>
এখানে:
- local:CustomTextBox ব্যবহার করে কাস্টম কন্ট্রোল ব্যবহার করা হয়েছে।
xmlns:localএর মাধ্যমে কাস্টম কন্ট্রোলকে XAML ফাইলে ইম্পোর্ট করা হয়েছে।
- Custom Control এর Style এবং Template (XAML এ)
<Style TargetType="local:CustomTextBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:CustomTextBox">
<Border Background="LightGray" BorderBrush="Black" BorderThickness="1" CornerRadius="5">
<TextBox x:Name="textBox" HorizontalAlignment="Stretch" VerticalAlignment="Center" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
এখানে:
- ControlTemplate এর মাধ্যমে কাস্টম কন্ট্রোলের ভিজ্যুয়াল স্টাইল নির্ধারণ করা হয়েছে।
- TextBox এর মাধ্যমে টেক্সট ইনপুটের জন্য একটি সাব-কন্ট্রোল যুক্ত করা হয়েছে।
Control Template এবং Custom Control এর মধ্যে পার্থক্য
- Control Template সাধারণত একটি বিদ্যমান কন্ট্রোলের ভিজ্যুয়াল উপস্থাপনাকে কাস্টমাইজ করতে ব্যবহৃত হয়, যেখানে কন্ট্রোলের কার্যকারিতা অপরিবর্তিত থাকে।
- Custom Control সম্পূর্ণ নতুন কন্ট্রোল তৈরি করতে ব্যবহৃত হয়, যার জন্য আপনি কন্ট্রোলের কার্যকারিতা এবং ভিজ্যুয়াল উপস্থাপনাকে পুরোপুরি কাস্টমাইজ করতে পারেন।
Conclusion
XAML এর মাধ্যমে Control Template Override এবং Custom Control Design ব্যবহার করে আপনি উইন্ডোজ অ্যাপ্লিকেশনগুলির UI ডিজাইন এবং কন্ট্রোলকে আরও ডাইনামিক এবং কাস্টমাইজড করতে পারেন। Control Template এর মাধ্যমে বিদ্যমান কন্ট্রোলের লুক পরিবর্তন করা যায়, এবং Custom Control তৈরি করে আপনি সম্পূর্ণ নতুন কন্ট্রোল ডিজাইন করতে পারেন যা নির্দিষ্ট ব্যবসায়িক প্রয়োজনীয়তা মেটাতে সক্ষম।
Read more