我有一个自定义控件。在自定义控件中,有几个元素。这些元素之一应该有一个特殊的高度值。
我说的这个高度是下面代码中的 CanvasThickness :
private double canvasThickness;
public static readonly DependencyProperty CanvasThicknessProperty =
DependencyProperty.Register("CanvasThickness",
typeof(double),
typeof(CustomControl1),
new FrameworkPropertyMetadata(3d));
public double CanvasThickness
{
get { return canvasThickness; }
set { canvasThickness = value; }
}
在 generic.xaml 中是这个 CanvasThickness 用于画布的高度属性:
<ControlTemplate x:Key="SliderTemplate" TargetType="{x:Type Slider}">
<Canvas Width="25" Height="{TemplateBinding local:CustomControl1.CanvasThickness}" Background="Green">
// Templating Slider
</Canvas>
</ControlTemplate>
<Style TargetType="{x:Type local:CustomControl1}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomControl1}">
<Canvas Width="50" Height="20" Background="GreenYellow">
<Slider Template="{StaticResource SliderTemplate}" />
</Canvas>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
现在这个 Slider 的高度为 3。假设我像这样使用 CustomControl:
<ctrl:CustomControl1 CanvasThickness="12"/>
我假设 Slider 的高度为 12。但它仍然是 3。CanvasThickness 的值为 12。
如何在 PropertyChanged 上重绘 CustomControl?我尝试了 FrameworkPropertyMetadataOptions,但它不影响 CustomControl。
提前致谢。
编辑:如果可能,该解决方案也应该在 Silverlight 中运行。