मैं विंडोज अनुप्रयोगों के निर्माण के लिए सी # और एक्सएएमएल सीख रहा हूं। मैं एक बटन बनाना चाहता था जिसमें इसकी पृष्ठभूमि के रूप में एक छवि हो। लेकिन जब बटन पर होवर किया जाता है, तो बटन की पृष्ठभूमि को दूसरी "हाइलाइट" छवि में बदलना चाहिए। मैंने पृष्ठभूमि छवियों को resource.resx में जोड़ने का प्रयास किया। मुझे wpf बटन के डिफ़ॉल्ट हाइलाइट प्रभाव से छुटकारा पाने के लिए xaml शैलियों का उपयोग करके एक कस्टम बटन बनाना था।डब्ल्यूपीएफ बटन माउसओवर छवि
मैंने SO पर मिले कुछ कोड से एक कस्टम बटन बनाया। कोड (एक नया संसाधन शब्दकोश में) है:
<!-- This style is used for buttons, to remove the WPF default 'animated' mouse over effect -->
<Style x:Key="StartMenuButtons" TargetType="Button">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border"
BorderThickness="0"
Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<!-- UPDATE THE BUTTON BACKGROUND -->
<Setter Property="Background" Value="WHAT GOES HERE" TargetName="border"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
क्या मैं इतना एक और छवि के लिए रखा है पृष्ठभूमि परिवर्तन है कि, चाहे वह मेरी resources.resx या किसी अन्य स्थान में है? (यह सुनिश्चित नहीं है कि छवि को एक्सेस करने के लिए कहां रखा जाए)। मैंने एसओ की खोज की लेकिन मुझे मिले समाधान ठीक से नहीं थे जो मैं कर रहा हूं। यदि यह एक डुप्लिकेट प्रश्न है, तो मैं क्षमा चाहता हूं।
सारांश:
मैं कैसे एक बटन के पृष्ठभूमि छवि एक माउस पर ट्रिगर के ऊपर XAML में बदल सकता हूँ? मैं छवि कहां रखूं ताकि इसे ट्रिगर कोड में एक्सेस किया जा सके?
अद्यतन यह मैंने ट्रिगर कार्रवाई के रूप में रखा है, लेकिन छवि अद्यतन नहीं होती है। मैंने संसाधन निर्माण के लिए छवि निर्माण क्रिया सेट करना सुनिश्चित किया है और इसे संसाधन नामक फ़ोल्डर में रखा है।
कोड है:
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="/Simon;component/Resources/btn_bg_hover.jpg" />
</Setter.Value>
</Setter>
</Trigger>
फ़ाइल संरचना है
Simon
Simon
Resources
all the images
Fonts
bin
obj
Properties
समाधान
निम्नांकित बटन पर माउसओवर छवि को बदलने के लिए अनुमति देने के लिए पूरा कोड है:
<!-- This style is used for buttons, to remove the WPF default 'animated' mouse over effect -->
<Style x:Key="StartMenuButtons" TargetType="Button">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border"
BorderThickness="0"
Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="border">
<Setter.Value>
<ImageBrush ImageSource="Resources/btn_bg_hover.jpg" />
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
वास्तविक छवि के लिए, मैंने इसे रूट निर्देशिका में संसाधन फ़ोल्डर में रखा है। दृश्य स्टूडियो में संसाधन उपकरण का उपयोग करके वहां छवियों को आयात करने के बाद, मैंने प्रॉपर्टी फलक में बिल्ड सेटिंग्ससंसाधन को अपडेट किया।
समाधान dbaseman
मुझे लगता है कि मेरी छवियाँ में की तरह तुम हो। मैं कोड जोड़ा जमा हो जाती है एक संसाधन फ़ोल्डर है लेकिन जब मैं माउस, छवि परिवर्तन नहीं करता है? मैंने सुनिश्चित किया है कि छवि में "बिल्ड एक्शन" संसाधन को सेट किया गया है। कोई विचार? – Ishikawa
@Ishikawa पहले, क्या आप वाकई छवि को सही तरीके से संदर्भित कर रहे हैं? डिज़ाइन व्यू में मूल '<छवि स्रोत =' '/> 'तत्व का उपयोग करें, और सुनिश्चित करें कि यह सही ढंग से दिखाई देता है। स्रोत सिर्फ '/ साइमन; घटक/संसाधन/image.jpg' होना चाहिए, लेकिन विज़ुअल स्टूडियो को सेट अप करने के लिए एक विज़ार्ड बटन चीज़ भी है। – McGarnagle
<छवि स्रोत = "/ संसाधन/btn_bg_hover.jpg" खिंचाव = "कोई नहीं"> मैंने इसका उपयोग किया और छवि ठीक से आई। मैंने मूल कोड में बस "/Resources/btn_bg_hover.jpg" डालने का प्रयास किया लेकिन यह अभी भी कुछ भी नहीं बदलता है। मैं वास्तव में सहायता के लिए आभारी हूं। कोई विचार? – Ishikawa