。という名前の依存関係プロパティを定義するSilverlightCustomControlを開発しています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); }
}
その結果、境界線がまったく見えなくなります。境界線の幅と高さを手動で値に設定すると、すべて正常に機能します。
それを達成するための有効な方法ですか、それともコントロールの-methodTemplateBinding
で幅と高さを手動で設定する必要がありますか?OnApplyTemplate()