WPF控件模板与页面导航编程详解
1. 控件模板(Control Templates)
WPF 允许我们完全改变标准控件的外观,它通过将控件外观的规范与行为的规范分离来实现这一点,具体是通过使用控件模板(ControlTemplate)。
1.1 模板绑定(Template Binding)
ContentPresenter 通常从模板化父级检索内容,但有时我们希望它使用模板化父级的其他属性。TemplateBinding 类就是为此设计的一种特殊绑定类型。
例如,若要在 ContentPresenter 周围添加一些空间,使其与包含它的控件隔开,一般会设置 Padding 属性,但 ContentPresenter 类没有 Padding 属性,因为 Padding 属性是用于指定控件在其内容周围添加的厚度,而 ContentPresenter 代表内容本身,所以这里控件的 Padding 对应 ContentPresenter 的 Margin。
我们可以使用 TemplateBinding 标记扩展将模板化父级的 Padding 属性绑定到 ContentPresenter 的 Margin 属性,示例代码如下:
<ContentPresenter Margin="{TemplateBinding Padding}"/>上述代码中,使用了模板化父级的 Padding 属性值。
再如,下面的标记创建了一个按钮模板,按钮的可见形状是一个填充颜色为浅绿色的椭圆,模板化父级的 Padding