Databind RenderTransform Scaling in Silverlight 2 Beta 2有人知道是否可以在Silverlight 2 Beta 2中对渲染变换的ScaleX和ScaleY进行数据绑定? 在WPF中可以进行绑定转换-但是通过XAML在Silverlight中设置绑定时出现错误。 也许可以通过代码来做到这一点?
我想绑定ScaleTransform元素的ScaleX和ScaleY。 尝试绑定数据上下文中的double属性时,出现运行时错误:
我的绑定看起来像这样:
我已经三重验证了绑定路径是正确的-我将一个滑块绑定到相同的值,并且效果很好... 可见性是double类型的,并且是介于0.0和30.0之间的数字。 我有一个值转换器,可以将数字缩小为0.5和1-我想根据水的透明度来缩放鱼的大小。 所以我认为我绑定的类型没有问题... ScaleTransform没有数据上下文,因此绑定很可能正在寻找SelectedDive.Visibility不在自身之上而没有找到它。 Silverlight xaml和数据绑定中有很多与WPF不同的地方... 无论如何解决此问题,您都将需要在代码中设置绑定**,或者手动侦听数据对象的PropertyChanged事件,并在后面的代码中设置Scale。 如果您想为缩放比例做动画/故事板,我会选择后者。 **我需要检查,但您可能无法绑定到它。我记得如果RenderTransform不是动画的一部分,它将变成矩阵变换并且所有赌注都关闭。 Jonas是运行时错误还是编译时?查看文档,ScaleX和ScaleY是依赖项属性,因此您应该能够编写
...其中Foo和Bar是适当的类型。 编辑:当然,那是WPF文档。我想他们可能已经将ScaleX和ScaleY更改为标准属性,而不是Silverlight中的依赖项属性。我希望知道您所遇到的错误的更多信息。 我希望通过XAML解决此问题,但事实证明Brian的建议是要走的路。我使用了Matt的建议来给scale转换命名,以便可以从代码中访问它。然后,我钩住了滑块的值更改事件,并手动更新了ScaleX和ScaleY属性。我保留了值转换器,以将可见性范围(0-30m)转换为比例(0.5到1)。代码如下:
好的,图像本身是否正确地拾取了DataContext? 尝试添加以下内容:
如果可以编译并运行,则将鼠标悬停在图像上,看看它是否显示正确的值。 是的,也许嵌入式渲染转换不会从它们应用于的对象继承DataContext。您可以将DataContext强制放入其中吗?例如,给转换命名:
...然后在您的代码背后:
...这样缩放器肯定会与Image共享其DataContext。 抱歉-一直在寻找答案,所以我不知道您使用更多信息来编辑问题。 好的,可见性是Double类型的,因此绑定应在这方面起作用。 解决方法是,您是否可以尝试将ScaleX和ScaleY值直接绑定到SelectedDive.Visibility绑定到的滑块控件?就像是:
如果这行得通,那么至少会帮助您。 编辑:啊,我只是想起我曾经读过Silverlight在绑定中不支持ElementName语法,所以可能不起作用。 嗯,我想我明白您的问题了。您正在尝试将可见性(SelectedDive.Visibility)类型的属性绑定到Double(ScaleTransform.ScaleX)类型的属性。 WPF / Silverlight无法在这两种类型之间转换。 你想达到什么目的?也许我可以帮助您使用XAML。什么是" SelectedDive",当其可见性更改时,您想发生什么? |