Windows Phone 7의 gesture example app I found online에서 사용하는 다음 확장 방법이 있습니다. 내 응용 프로그램 용 8.1로 마이그레이션하려고 시도했지만 Storyboard.SetTargetProperty
메서드 호출 문제가 발생했습니다. Windows 8.1에서는 this signature is not supported 인 것으로 보입니다.Windows Phone 8.1에서 Storyboard.SetTargetProperty가 작동하지 않습니까?
나는 Windows Phone 개발에 대해 상당히 새롭고이 대신 사용해야하는 것이 무엇인지 알지 못한다. 누군가 달성 할 수있는 것을 제공하는 API의 메소드를 가르쳐 줄 수 있습니까? 이제 서명에 이전에 PropertyPath가 허용 된 문자열이 필요합니다. DP 속성을 나타내는 문자열로 DP 속성을 변환해야 할 필요가 있는지 모르겠습니까? DP 속성의 이름으로 설정된 문자열이 작동합니까?
public static void Animate(this DependencyObject target, double from, double to,
object propertyPath, int duration, int startTime,
Action completed = null)
{
var db = new DoubleAnimation();
db.To = to;
db.From = from;
db.EasingFunction = new SineEase();
db.Duration = TimeSpan.FromMilliseconds(duration);
Storyboard.SetTarget(db, target);
// Compiler error: This method signature is no longer supported.
Storyboard.SetTargetProperty(db, new PropertyPath(propertyPath));
var sb = new Storyboard();
sb.BeginTime = TimeSpan.FromMilliseconds(startTime);
if (completed != null)
{
sb.Completed += (s, e) => completed();
}
sb.Children.Add(db);
sb.Begin();
}
는
SetTargetProperty
호출에 전달 될 수있는 문자열의 TranslateTransform.YProperty
변환하는 방법을 확실하지이
TranslateTransform elementTrans = new TranslateTransform();
elementTrans.Animate(0, elementOffset, TranslateTransform.YProperty, 200, startTime, null, action);
처럼 불려갑니다.
편집 문자열을 통해에서 속성 이름을 전달하는 방법을 보여줍니다
I have found some documentation on MSDN. 나는 그것을 올바르게 제공하고 있다고 생각하지는 않지만, 런타임 예외가 주어지면 속성을 찾을 수 없다. 내가 대신 객체의 propertyPath
에 대한 문자열을 적용하는 방법 서명을 변경,하지만 난 내 원래의 게시물에서 그대로 위의 원본 소스를 유지하기 위해 원하는대로이 여기에 반영하지 않았다
transform.Animate(transform.X, 0, "(FrameworkElement.RenderTransform).(TranslateTransform.XProperty)", 300, 0, new BounceEase()
{
Bounciness = 5,
Bounces = 2
});
참고.
RenderTransform
TranslateTransform
로 설정됩니다
public static void SetHorizontalOffset(this FrameworkElement element, double offset)
{
var transform = new TranslateTransform { X = offset };
element.RenderTransform = transform;
element.Tag = new Offset { Value = offset, Transform = transform };
}
감사합니다. –
"TranslateTransform.X"도 작동한다는 점에 유의해야합니다. :) –