如果仔细的看我们当前的TTT游戏,会发现Button对象并没有完全为我们工作 。哪些TTT面板有内圆角?
图5-14
这里,我们真正需要的是能够保持按钮的行为,如支持内容和点击事件,但 是我们想要接管这些按钮的外观。WPF允许这种方式,因为内在的控件创建的时 候是缺少外观性的,例如,他们提供行为,但是外观可以被完全包装在客户端控 件的外面。
还记得我们是如何使用数据模板,来为非可视化对象提供外观的么?我们能 够使用控件模板对控件做同样的事情,这将是一组StoryBoard,触发器,以及大 多数重要的提供控件外观的元素。
为了修复我们的按钮外观,我们创建了一个控件模板的资源。让我们从示例 5-31出发,这是一个带有简单的矩形,和以后考虑如何显示实际的按钮内容。
示例5-31
<Window.Resources>
<ControlTemplate x:Key="ButtonTemplate">
<Rectangle />
</ControlTemplate>
<!-- let's just try one button for now -->
<Button Template="{StaticResource ButtonTemplate}" />
</Window.Resources>
图5-15显示了设置一个单独按钮的Template属性的结果。
注意到按钮过去样子的痕迹(保留在图5-15中)。不幸的是,看不到我们的 矩形的痕迹。问题在于,缺少一个显示的填充设置,这个矩形的默认填充是透明 的,显示grid的黑色背景。让我们将其设置为喜欢的万圣节颜色:
<ControlTemplate x:Key=”ButtonTemplate”>
<Rectangle Fill=”Orange” />
</ControlTemplate>
图5-15