我想创建最简单的Silverlight模板控件,并且我似乎无法使TemplateBinding在RotateTransform的Angle属性上工作。Silverlight TemplateBinding RotateTransform
下面是generic.xaml的控件模板:
<ControlTemplate TargetType="local:CtlKnob">
<Grid x:Name="grid" RenderTransformOrigin="0.5,0.5">
<Grid.RenderTransform>
<TransformGroup>
<RotateTransform Angle="{TemplateBinding Angle}"/> <!-- This does not work -->
<!-- <RotateTransform Angle="70"/> --> <!-- This works -->
</TransformGroup>
</Grid.RenderTransform>
<Ellipse Stroke="#FFB70404" StrokeThickness="19"/>
<Ellipse Stroke="White" StrokeThickness="2" Height="16" VerticalAlignment="Top"
HorizontalAlignment="Center" Width="16" Margin="0,2,0,0"/>
</Grid>
</ControlTemplate>
这里是C#:
using System.Windows;
using System.Windows.Controls;
namespace CtlKnob
{
public class CtlKnob : Control
{
public CtlKnob()
{
this.DefaultStyleKey = typeof(CtlKnob);
}
public static readonly DependencyProperty AngleProperty =
DependencyProperty.Register("Angle", typeof(double), typeof(CtlKnob), null);
public double Angle
{
get { return (double)GetValue(AngleProperty); }
set { SetValue(AngleProperty,value); }
}
}
}
+1不太确定为什么您将'Angle'重命名为'StartAngle'? – AnthonyWJones 2010-01-23 21:59:52
哈哈,好问题。当我开始玩代码时,我认为它没有起作用的原因是属性名称冲突或什么。我很快意识到这是一个愚蠢的想法,但到那时我已经重新命名了这个事物,因为我本性就是一个懒惰的人,所以我就这样离开了它。抱歉。 :) – 2010-01-23 23:40:39