问题
I want to use my own bitmaps for my buttons for a Metro style Windows 8 app. I can set the background brush for a button to my own ImageBrush and that works fine, except for the hover and pressed states. I cannot figure out how to set the bitmaps for them. Does anyone know how to do this?
Thanks.
回答1:
WinRT XAML Toolkit has an ImageButton control that allows to define images for all states if that is what you need. You can also check its default template in Generic.xaml to see how it uses the bitmaps based on multiple overlaid Image controls (check e.g. PART_HoverStateImage) and visual states that control opacities of these Image controls. If you are lazy - you can also use just two bitmaps and use semi-transparent bitmap defined using the PressedStateImageSource overlaid on top of the bitmap defined with IdleStateImageSource to show a hover state. Or you can go fully lazy and use just a single bitmap for idle state and let the control generate bitmaps for the other two states by setting GeneratePressedState and GenerateHoverState to true - that generates these bitmaps by "lightening" the idle state image with some basic image processing. The Toolkit also has a sample app with a page that demonstrates the use of the ImageButton control in multiple ways.
来源:https://stackoverflow.com/questions/11346957/how-do-i-set-a-custom-button-background-for-a-metro-app-for-all-states