に従ってください。CSHarpコードに従ってください。付属のプロパティAngle
を使用して、XAMLの四角形の角度を変更します。問題は、私がnew PropertyMetadata(0.0,OnAngleChanged)
をnew PropertyMetadata(0,OnAngleChanged)
に変更したときにうまく動作せず、XamlParseException
を投げて、the type initializer for XXX.RotationManager threw an exception
と言います。私はなぜnew PropertyMetadata(0,OnAngleChanged)
がうまくいかないのだろうか。新しいPropertyMetadata(0.0、OnAngleChanged)と新しいPropertyMetadata(0、OnAngleChanged)
class RotationManager
{
public static double GetAngle(DependencyObject obj)
{
return (double)obj.GetValue(AngleProperty);
}
public static void SetAngle(DependencyObject obj, double value)
{
obj.SetValue(AngleProperty, value);
}
// Using a DependencyProperty as the backing store for Angle. This enables animation, styling, binding, etc...
public static readonly DependencyProperty AngleProperty =
DependencyProperty.RegisterAttached("Angle", typeof(double), typeof(RotationManager), new PropertyMetadata(0.0,OnAngleChanged));
private static void OnAngleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var element = d as UIElement;
if (element!=null)
{
element.RenderTransformOrigin = new Point(.5, .5);
element.RenderTransform = new System.Windows.Media.RotateTransform((double)e.NewValue);
}
}
}
PropertyMetadata最初のコンストラクタの引数はObject型です。 0だけを書くと、int型として解釈され、ボックス化されます。新しい値をPropertyMetadata((double)0、...)を使ってdouble値を指定してみてください –
本当にありがとうございました。 – Grey