I made myself a TransparentButton style that makes the Button portion behave the way I want it to (mouseover, enabled, etc), but what I haven’t been able to do is set the content correctly in the style. Currently, I manually set everything in <Button.Content> for every button, and clearly that stuff needs to go into the Style. I have set the ContentTemplate for the style to a StackPanel that just contains an Image and a Label. The problem is, I don’t know how to specify in my <Button ...> markup the Label‘s text and the Image‘s Source. I figured that it had to do with TemplateBinding somehow, but I’ve been searching like crazy and can’t seem to find the information.
So, in summary, I just want a consistent button style where the button content is just a StackPanel of an Image and a Label, and I want to be able to create it in my GUI with something simple like:
<Button Style={DynamicResource TransparentButton}"
Label="Click Me" Image="Images/MyImage.png" />
Any tips would be much appreciated! I hope I’m on the right track here…
In order to create custom properties like this, you’ll need to make a CustomControl instead of just using a Button style.
This is fairly easy, though – just make a custom control that subclasses button, and adds your new properties (as dependency properties). This will make it stylable, but also provide you the ability to enforce that those properties are always available, with the syntax you’re describing (other than changing
<Buttonto<local:MyButton).For details, see the Control Authoring Overview on MSDN.