【发布时间】:2013-07-25 11:32:37
【问题描述】:
我是 WPF 新手,我的问题是我想在 XAML 代码中将某些属性类型转换为另一个权限,如下所示:
//I want to cast Effect to DropShadowEffect to access it's ShadowDepth
<Trigger Property="IsPressed" Value="True">
<Setter Property="Effect.ShadowDepth" Value="0.5"/>
</Trigger>
但是ShadowDepth是不可访问的,Effect应该先转换成DropShadowEffect。你能告诉我任何我可以在 XAML 代码中进行强制转换的解决方案吗?如果不可能,后面代码中的TypeConverter 就可以了。提前谢谢你。
【问题讨论】:
-
您确定需要投射吗?我从来不需要在 XAML 中转换任何东西。您甚至可以编写 DataContext.MyProperty,即使 DataContext 是对象类型。您面临的错误是什么?或许this可以帮到你。
-
@dowhilefor 我认为实际上这并不是一个强制转换,我只需要一种访问
Effect属性的ShadowDepth属性的方法。我的Button具有分配有DropShadowEffect实例的Effect属性。我想在使用Trigger按下按钮时更改ShadowDepth。如您所见,似乎没有办法给出Property的正确路径。 -
@dowhilefor 你建议的链接给了我一个我目前使用的解决方案。如果
DropShadowEffect只关心ShadowDepth属性并不重要,但它确实有更多的东西,并且重新创建一个与旧的ShadowDepth不同的实例并不那么方便。如果有更简单的解决方案,我也可以应用到其他类型的Effect比如BlurEffect...