Style WPF-এ একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা UI কন্ট্রোলের লুক এবং ফিল কাস্টমাইজ করার জন্য ব্যবহৃত হয়। Style ব্যবহার করে আপনি UI কন্ট্রোলের বিভিন্ন প্রপার্টি যেমন কালার, সাইজ, ফন্ট, মার্জিন ইত্যাদি নিয়ন্ত্রণ করতে পারেন। এটি কোড এবং UI উপাদানের মধ্যে একটি পরিষ্কার বিভাজন তৈরি করে, যা অ্যাপ্লিকেশনকে আরো মডুলার এবং রক্ষণাবেক্ষণযোগ্য করে তোলে।
Style এর মৌলিক ধারণা (Basic Concept of Style)
WPF এ Style হচ্ছে একটি একাধিক কন্ট্রোলের জন্য সাধারণ সেটিংস সংজ্ঞায়িত করার উপায়। আপনি একবার স্টাইল তৈরি করলে, তা একাধিক কন্ট্রোলের জন্য পুনরায় ব্যবহার করা যেতে পারে, যা ডেভেলপমেন্ট প্রক্রিয়াকে দ্রুত এবং সহজ করে তোলে। স্টাইলগুলি একটি কন্ট্রোলের প্রপার্টির মান নির্ধারণ করে এবং এটি XAML এ ডিফাইন করা হয়।
Style কিভাবে কাজ করে (How Style Works)
WPF-এ Style একটি কন্ট্রোলের উপাদানগুলোর মান সেট করতে ব্যবহৃত হয়। স্টাইল ডিফাইন করার জন্য XAML এ <Style> ট্যাগ ব্যবহার করা হয় এবং এতে আপনি কন্ট্রোলের Setters নির্ধারণ করতে পারেন, যেগুলো কন্ট্রোলের প্রপার্টি পরিবর্তন করবে।
Style এর মৌলিক গঠন (Basic Structure of Style)
Style মূলত Setters এর মাধ্যমে তৈরি হয়, যা কন্ট্রোলের প্রপার্টি সেট করতে ব্যবহৃত হয়। একটি Style সাধারণত নিচের মতো দেখতে হয়:
<Style TargetType="Button">
<Setter Property="Background" Value="LightBlue"/>
<Setter Property="FontSize" Value="16"/>
<Setter Property="Width" Value="100"/>
</Style>
এখানে, TargetType="Button" দ্বারা আমরা বলে দিচ্ছি যে এই স্টাইলটি শুধুমাত্র বাটন কন্ট্রোলের জন্য প্রযোজ্য হবে। এবং Setter ট্যাগের মাধ্যমে বাটনের Background, FontSize, এবং Width প্রপার্টি সেট করা হয়েছে।
Style ব্যবহার করার উপায় (How to Use Style)
স্টাইল তৈরি করার পর, আপনি সেটি বিভিন্ন কন্ট্রোলে প্রয়োগ করতে পারেন। স্টাইলটি StaticResource বা DynamicResource হিসেবে ব্যবহার করা হয়। এখানে একটি উদাহরণ দেয়া হলো:
১. Global Style ব্যবহার করা (Global Style)
আপনি যদি অ্যাপ্লিকেশনের সমস্ত বাটনগুলোর জন্য একই স্টাইল ব্যবহার করতে চান, তবে আপনি App.xaml ফাইলে একটি গ্লোবাল স্টাইল তৈরি করতে পারেন।
App.xaml:
<Application x:Class="WPFApplication.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<Style TargetType="Button">
<Setter Property="Background" Value="LightBlue"/>
<Setter Property="FontSize" Value="16"/>
<Setter Property="Width" Value="100"/>
</Style>
</Application.Resources>
</Application>
এখন, অ্যাপ্লিকেশনের সমস্ত বাটনে এই স্টাইল প্রযোজ্য হবে। এর ফলে, প্রতিটি বাটন ঐ একই লুক এবং অনুভূতি নিয়ে প্রদর্শিত হবে।
২. একটি নির্দিষ্ট কন্ট্রোলের জন্য স্টাইল ব্যবহার করা (Style for a Specific Control)
যদি আপনি একটি নির্দিষ্ট কন্ট্রোলের জন্য স্টাইল প্রয়োগ করতে চান, তবে সেই কন্ট্রোলের Style প্রপার্টিতে StaticResource ব্যবহার করতে পারেন।
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="WPF Example" Height="350" Width="525">
<Window.Resources>
<Style x:Key="MyButtonStyle" TargetType="Button">
<Setter Property="Background" Value="LightGreen"/>
<Setter Property="FontSize" Value="18"/>
<Setter Property="Width" Value="150"/>
</Style>
</Window.Resources>
<Grid>
<Button Content="Click Me" Style="{StaticResource MyButtonStyle}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Window>
এখানে, MyButtonStyle নামে একটি স্টাইল ডিফাইন করা হয়েছে, যা শুধুমাত্র এক নির্দিষ্ট বাটনে প্রয়োগ করা হয়েছে।
৩. Trigger এর মাধ্যমে স্টাইল পরিবর্তন (Style Changes Using Triggers)
স্টাইলের মধ্যে Triggers ব্যবহার করে আপনি কন্ট্রোলের অবস্থান অনুযায়ী তার স্টাইল পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, বাটন হোভার হলে তার ব্যাকগ্রাউন্ড পরিবর্তন করা।
উদাহরণ:
<Style TargetType="Button">
<Setter Property="Background" Value="LightBlue"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="LightCoral"/>
</Trigger>
</Style.Triggers>
</Style>
এখানে, বাটনে মাউসের হোভার করলে তার ব্যাকগ্রাউন্ড স্বয়ংক্রিয়ভাবে পরিবর্তিত হবে।
Style এর উন্নত ব্যবহার (Advanced Usage of Style)
১. ControlTemplate এবং DataTemplate:
- ControlTemplate: স্টাইলের মধ্যে আপনি কন্ট্রোলের পুরো লেআউট এবং গঠন কাস্টমাইজ করতে পারেন। এটি কন্ট্রোলের ডিফল্ট লুক পরিবর্তন করার জন্য ব্যবহৃত হয়।
- DataTemplate: এটি ডেটা প্রদর্শনের জন্য কাস্টম লেআউট তৈরি করতে ব্যবহৃত হয়।
ControlTemplate উদাহরণ:
<Style TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<Ellipse Fill="Red"/>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
এই কোডে, বাটনের ডিফল্ট লুক পরিবর্তন করে একটি এলিপ্স আকারের কন্ট্রোল তৈরি করা হয়েছে।
Style এবং Performance (স্টাইল এবং পারফরম্যান্স)
- Resource Efficiency: স্টাইলের মাধ্যমে, একবার কন্ট্রোলের বৈশিষ্ট্য নির্ধারণ করা হয়, তাই অনেক কন্ট্রোলের জন্য একই স্টাইল পুনরায় ব্যবহার করা হয়, যার ফলে অ্যাপ্লিকেশন আরো রিসোর্স-সাশ্রয়ী হয়।
- Performance Impact: অতিরিক্ত কাস্টম স্টাইল বা জটিল ControlTemplate ব্যবহার করার সময় অ্যাপ্লিকেশনের পারফরম্যান্স কিছুটা প্রভাবিত হতে পারে, বিশেষত গ্রাফিক্যাল ইফেক্ট এবং অ্যানিমেশনের ক্ষেত্রে।
সারাংশ (Summary)
WPF-এ Style ব্যবহারের মাধ্যমে আপনি কন্ট্রোলগুলোর লুক এবং ফিল কাস্টমাইজ করতে পারেন। এটি UI ডিজাইনকে আরও পরিষ্কার, মডুলার এবং রক্ষণাবেক্ষণযোগ্য করে তোলে। স্টাইল ব্যবহার করে আপনি কন্ট্রোলের প্রপার্টি সেট করতে পারেন, একই স্টাইল একাধিক কন্ট্রোলে প্রয়োগ করতে পারেন, এবং Triggers ও ControlTemplate ব্যবহার করে ইন্টারেকটিভ কাস্টমাইজেশন করতে পারেন। DataTemplate ব্যবহার করে ডেটার লেআউটও কাস্টমাইজ করা যায়, যা WPF অ্যাপ্লিকেশনগুলির শক্তিশালী বৈশিষ্ট্য।
Read more