gpt4 book ai didi

silverlight - 在静态方法中使用依赖属性回调和动画进行数据绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 03:19:04 25 4
gpt4 key购买 nike

在我开始之前,我在自定义用户控件中有这段代码:

private DependencyProperty _rotation = DependencyProperty.Register("Rotation", typeof(double), typeof(MyControl),
new PropertyMetadata(new PropertyChangedCallback(RotationPropertyChanged)));
public double Rotation
{
get { return (double)GetValue(_rotation); }
set { SetValue(_rotation, value); }
}
public static void RotationPropertyChanged(DependencyObject obj, System.Windows.DependencyPropertyChangedEventArgs e)
{
//How can I start Animation, as I'm in a Static method?
}

属性设置正确,我的 RotationPropertyChanged 函数也被正确调用。如您所见,我在该方法中的评论是我的问题。由于此处理程序需要是静态的(VS 告诉我的),我如何访问非静态的东西,例如 Storyboard ,以便我可以开始动画?

详细说明数据绑定(bind):

我的 View 模型正在更新一个属性(位于同一 View 模型中),该属性通过 Xaml 数据绑定(bind)到此依赖属性。我希望我不必使用此回调,但如果没有它,属性将不会更改。

谢谢

最佳答案

您可以将传递到静态事件处理程序的 DependencyObject 强制转换为您的控件类型,然后对其调用实例方法。我认为这是 Silverlight/WPF 中具有依赖属性的非常常见的模式:

private DependencyProperty _rotation = DependencyProperty.Register(
"Rotation",
typeof(double),
typeof(MyControl),
new PropertyMetadata(new PropertyChangedCallback(RotationPropertyChanged)));

public double Rotation
{
get { return (double)GetValue(_rotation); }
set { SetValue(_rotation, value); }
}

public static void RotationPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
((MyControl)obj).RotationPropertyChanged(e);
}

private void RotationPropertyChanged(DependencyPropertyChangedEventArgs e)
{
// Start your animation, this is now an instance method
}

关于silverlight - 在静态方法中使用依赖属性回调和动画进行数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3142792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com