এখনও অবধি সমস্ত উত্তর সম্পূর্ণরূপে অন্য কিছু দিয়ে ডিফল্ট বোতামের আচরণটি প্রতিস্থাপনের সাথে জড়িত। তবে, আইএএমএইচও এটি XML উপাদানটির বিদ্যমান, ডিফল্ট টেম্পলেটটি সম্পাদনা করে আপনার যত্ন নেওয়া কেবলমাত্র অংশটি পরিবর্তন করা সম্ভব তা বোঝা গুরুত্বপূর্ণ এবং গুরুত্বপূর্ণ ।
ডাব্লুপিএফ বোতামে হোভার ইফেক্টের সাথে মোকাবিলা করার ক্ষেত্রে, ডাব্লুপিএফ Buttonউপাদানটিতে উপস্থিতি পরিবর্তনের কারণে Triggerডিফল্ট শৈলীর একটি হয় Buttonযা IsMouseOverসম্পত্তি ভিত্তিতে তৈরি হয় Backgroundএবং BorderBrushশীর্ষ স্তরের Borderউপাদানটির বৈশিষ্ট্য এবং বৈশিষ্ট্য নির্ধারণ করে নিয়ন্ত্রণ টেমপ্লেটে। Buttonউপাদান পটভূমিতে নীচে Borderযাতে পরিবর্তন উপাদান পটভূমিতে Button.Backgroundসম্পত্তি দেখা হচ্ছে থেকে হোভার ইফেক্ট বাধা দেয় না।
কিছু প্রচেষ্টা সহ, আপনি নিজের সেটারের সাথে এই আচরণটি ওভাররাইড করতে পারেন, তবে যে উপাদানটি আপনাকে প্রভাবিত করতে হবে সেটি হ'ল টেমপ্লেটে রয়েছে এবং আপনার নিজের এক্সএএমএল-তে সরাসরি অ্যাক্সেসযোগ্য নয়, এই পদ্ধতিটি কঠিন এবং আইএমএইচও অতিরিক্ত জটিল।
আরেকটি বিকল্প হিসাবে গ্রাফিক ব্যবহার করতে হবে Contentজন্য Buttonবদলে Background। আপনার যদি গ্রাফিকের উপরে অতিরিক্ত সামগ্রীর প্রয়োজন হয় তবে আপনি এগুলিকে Gridসামগ্রীতে শীর্ষ স্তরের একটি বিষয় হিসাবে একত্রিত করতে পারেন ।
তবে, আপনি যদি আক্ষরিকভাবে কেবল হোভার ইফেক্টটি পুরোপুরি অক্ষম করতে চান (কেবল এটি লুকিয়ে রাখার চেয়ে), আপনি ভিজ্যুয়াল স্টুডিও এক্সএএমএল ডিজাইনার ব্যবহার করতে পারেন:
- আপনার এক্সএএমএল সম্পাদনা করার সময়, "ডিজাইন" ট্যাবটি নির্বাচন করুন ।
- ইন "ডিজাইন" ট্যাব, বোতাম যার জন্য আপনি প্রভাব নিষ্ক্রিয় করতে চান এটি।
- সেই বোতামটিতে ডান ক্লিক করুন এবং "টেম্পলেট সম্পাদনা করুন / একটি অনুলিপি সম্পাদনা করুন ..." নির্বাচন করুন । নতুন টেম্পলেট সংস্থানটি আপনি কোথায় স্থাপন করতে চান সেই প্রম্পটে আপনি নির্বাচন করুন Select এটি কিছুই করার জন্য প্রদর্শিত হবে না, তবে প্রকৃতপক্ষে ডিজাইনার যেখানে আপনি এটি বলেছেন সেখানে নতুন সংস্থান যুক্ত করবে এবং সেই সমস্ত সংস্থানগুলিকে বোতাম টেমপ্লেট হিসাবে ব্যবহার করে এমন স্টাইলের উল্লেখ করতে আপনার বোতামের উপাদানটি পরিবর্তন করেছে।
- এখন, আপনি যে স্টাইল সম্পাদনা করতে পারেন। সবচেয়ে সহজ জিনিসটি উপাদানটি মুছতে বা মন্তব্য-আউট করা (যেমন, Ctrl+ E, C)
<Trigger Property="IsMouseOver" Value="true">...</Trigger>। অবশ্যই, আপনি সেই সময়ে যে টেম্পলেটটি চান তা পরিবর্তন করতে পারেন।
আপনার কাজ শেষ হয়ে গেলে, বোতামের স্টাইলটি দেখতে এরকম কিছু দেখবে:
<p:Style x:Key="FocusVisual">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</p:Style>
<SolidColorBrush x:Key="Button.Static.Background" Color="#FFDDDDDD"/>
<SolidColorBrush x:Key="Button.Static.Border" Color="#FF707070"/>
<SolidColorBrush x:Key="Button.MouseOver.Background" Color="#FFBEE6FD"/>
<SolidColorBrush x:Key="Button.MouseOver.Border" Color="#FF3C7FB1"/>
<SolidColorBrush x:Key="Button.Pressed.Background" Color="#FFC4E5F6"/>
<SolidColorBrush x:Key="Button.Pressed.Border" Color="#FF2C628B"/>
<SolidColorBrush x:Key="Button.Disabled.Background" Color="#FFF4F4F4"/>
<SolidColorBrush x:Key="Button.Disabled.Border" Color="#FFADB2B5"/>
<SolidColorBrush x:Key="Button.Disabled.Foreground" Color="#FF838383"/>
<p:Style x:Key="ButtonStyle1" TargetType="{x:Type Button}">
<Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
<Setter Property="Background" Value="{StaticResource Button.Static.Background}"/>
<Setter Property="BorderBrush" Value="{StaticResource Button.Static.Border}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
<ContentPresenter x:Name="contentPresenter" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsDefaulted" Value="true">
<Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.Pressed.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Pressed.Border}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Background" TargetName="border" Value="{StaticResource Button.Disabled.Background}"/>
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Disabled.Border}"/>
<Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="{StaticResource Button.Disabled.Foreground}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</p:Style>
(দ্রষ্টব্য: আপনি p:প্রকৃত কোডে এক্সএমএল নেমস্পেসের যোগ্যতাগুলি বাদ দিতে পারেন … আমি কেবল এখানে এগুলি সরবরাহ করি কারণ স্ট্যাক ওভারফ্লো এক্সএমএল কোড ফর্ম্যাটরগুলি <Style/>এমন উপাদানগুলির দ্বারা বিভ্রান্ত হয়ে পড়ে যেগুলির এক্সএমএল নেমস্পেসের সাথে সম্পূর্ণ-যোগ্যতাসম্পন্ন নাম নেই name)
আপনি যদি অন্য বোতামগুলিতে একই শৈলীটি প্রয়োগ করতে চান তবে আপনি কেবল তাদের ডান ক্লিক করতে পারেন এবং "টেম্পলেট সম্পাদনা করুন / সংস্থানগুলি প্রয়োগ করুন" নির্বাচন করতে পারেন এবং প্রথম বোতামটির জন্য আপনি যে শৈলীটি যুক্ত করেছেন তা নির্বাচন করতে পারেন। এক্সএএমএল-এর উপাদানগুলিতে ডিফল্ট শৈলী প্রয়োগ করার জন্য সাধারণ কৌশলগুলি ব্যবহার করে আপনি এমনকি সমস্ত বোতামের জন্য এই স্টাইলটিকে ডিফল্ট স্টাইল তৈরি করতে পারেন।
Forward-48.pngকরতে হবে এবং এটির জন্য এটি পরিবর্তন করতে ইসমাউসওভারকে ট্রিগার করতে হবেForward-48.png। আমি আপনার কোডটি বিভিন্ন চিত্র সহ ব্যবহার করার চেষ্টা করছি এবং আমি সবাই ভাল কাজ করেছি।