我正在开发一个 Silverlight CustomControl,它定义了一个名为SpinnerSize
. 现在我想将Border
默认模板内部的宽度和高度设置为SpinnerSize
-property 使用TemplateBinding
:
<Style TargetType="local:MyCustomControl">
<Setter Property="SpinnerSize" Value="12" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:MyCustomControl">
<Border
Width="{TemplateBinding SpinnerSize}"
Height="{TemplateBinding SpinnerSize}"
Background="Red" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
上例中的SpinnerSize
引用定义如下:
public static readonly DependencyProperty SpinnerSizeProperty =
DependencyProperty.Register(
"SpinnerSize",
typeof(int),
typeof(MyCustomControl),
new PropertyMetadata(default(int)));
public int SpinnerSize
{
get { return (int)this.GetValue(SpinnerSizeProperty); }
set { this.SetValue(SpinnerSizeProperty, value); }
}
结果是我根本看不到边界。如果我手动将边框的宽度和高度设置为一个值,一切正常。
是TemplateBinding
实现这一目标的有效方法,还是我必须OnApplyTemplate()
在控件的 - 方法中手动设置宽度和高度?