इसके लिए आपको UserControl
की आवश्यकता नहीं है, केवल एक कस्टम संसाधन के रूप में एक कस्टम Button
टेम्पलेट, जिसे आप किसी भी Button
उदाहरण पर शैली सेट करके पुन: उपयोग कर सकते हैं।
हालांकि यह मिश्रण के बिना करने योग्य है, मैं आपको कम से कम परीक्षण प्राप्त करने की सलाह देता हूं, यह डिजाइन/दृश्य विकास के लिए वास्तव में वास्तव में अच्छा आईडीई है!
संपादित करें: एक छोटे से वर्तमान यहाँ एक प्रारंभिक बिंदु :)
<Style x:Key="ButtonStyle1" TargetType="Button">
<Setter Property="Foreground" Value="#FFFFFFFF"/>
<Setter Property="Padding" Value="3"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="BorderBrush" Value="#FF000000"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver"/>
<VisualState x:Name="Pressed"/>
<VisualState x:Name="Disabled">
<Storyboard>
<DoubleAnimation Duration="0" To="0.4" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="DisabledVisualElement"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="FocusStates">
<VisualState x:Name="Focused">
<Storyboard>
<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisualElement"/>
</Storyboard>
</VisualState>
<VisualState x:Name="Unfocused"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="Background" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF707070" Offset="0"/>
<GradientStop Color="#FF666666" Offset="0.49"/>
<GradientStop Color="#FF5e5e5e" Offset="0.51"/>
<GradientStop Color="#FF535353" Offset="1"/>
</LinearGradientBrush>
</Border.Background>
</Border>
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
<ContentPresenter.Effect>
<DropShadowEffect BlurRadius="3" ShadowDepth="2" Opacity="0.5"/>
</ContentPresenter.Effect>
</ContentPresenter>
<Rectangle x:Name="DisabledVisualElement" Fill="#FFFFFFFF" IsHitTestVisible="false" Opacity="0"/>
<Rectangle x:Name="FocusVisualElement" IsHitTestVisible="false" Margin="1" Opacity="0" Stroke="#FF6DBDD1" StrokeThickness="1"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
क्या आपके पास अभी देखने के लिए है या आपके पास ढाल रंग का विवरण पहले से ही है? यदि आप बस देख रहे हैं तो मिश्रण बहुत मदद करेगा ... हालांकि यह शैली में xaml के साथ काम करने के साथ पूरी तरह से करने योग्य है (हालांकि समय लेने वाला हो सकता है)। आप एक ही समय में xaml और डिजाइनर को देखना चाहेंगे जब तक कि आप ग्रेडियेंट्स को यह नहीं देखते कि आप उन्हें कैसे चाहते हैं। फिर आप बटन का अपना विरासत संस्करण बना सकते हैं या केवल अलग-अलग बटन या सभी बटनों पर शैली का उपयोग कर सकते हैं। –