から派生したクラスがありFrameworkElement
、WPF で を使用してその Location プロパティを更新する必要がありますDoubleAnimation
。プロパティを次のように登録しますDependendencyProperty
。
public class TimeCursor : FrameworkElement
{
public static readonly DependencyProperty LocationProperty;
public double Location
{
get { return (double)GetValue(LocationProperty); }
set
{
SetValue(LocationProperty, value);
}
}
static TimeCursor()
{
LocationProperty = DependencyProperty.Register("Location", typeof(double), typeof(TimeCursor));
}
}
次のコードは、ストーリーボードを設定します。
TimeCursor timeCursor;
private void SetCursorAnimation()
{
timeCursor = new TimeCursor();
NameScope.SetNameScope(this, new NameScope());
RegisterName("TimeCursor", timeCursor);
storyboard.Children.Clear();
DoubleAnimation animation = new DoubleAnimation(LeftOffset, LeftOffset + (VerticalLineCount - 1) * HorizontalGap + VerticalLineThickness,
new Duration(TimeSpan.FromMilliseconds(musicDuration)), FillBehavior.HoldEnd);
Storyboard.SetTargetName(animation, "TimeCursor");
Storyboard.SetTargetProperty(animation, new PropertyPath(TimeCursor.LocationProperty));
storyboard.Children.Add(animation);
}
storyboard.Begin(this)
次に、上記のメソッドを含むオブジェクトの別のメソッドから呼び出します。SetCursorAnimation()
このオブジェクトは から派生していCanvas
ます。ただし、Location
プロパティが更新されることはなく (Location の set アクセサーが呼び出されることはありません)、例外はスローされません。私は何を間違っていますか?