У меня есть пользовательский элемент управления.В пользовательских элементах управления есть несколько элементов.Один из этих элементов должен иметь специальное значение высоты.
Эта высота, о которой я говорю, - это 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>
Теперь этот слайдер имеет высоту 3. Допустим, я использую CustomControl следующим образом:
<ctrl:CustomControl1 CanvasThickness="12"/>
Я бы предположил, что слайдерВысота будет 12. Но все равно 3. Значение CanvasThickness равно 12.
Как переписать CustomControl на PropertyChanged?Я пробовал FrameworkPropertyMetadataOptions, но это не влияет на CustomControl.
Заранее спасибо.
РЕДАКТИРОВАТЬ: Если возможно, решение также должно работать в Silverlight.