13

我正在尝试使用包含在 ControlTemplate 中的 Storyboard 中的 DynamicResource。

但是,当我尝试执行此操作时,出现“无法冻结此 Storyboard 时间线树以供跨线程使用”错误。

这里发生了什么?

4

2 回答 2

31

不可以,您不能在 Storyboard 中使用包含在 Style 或 ControlTemplate 中的 DynamicResource。事实上,您也不能使用数据绑定表达式。

这里的故事是 Style 或 ControlTemplate 中的所有内容都必须安全地跨线程使用,并且计时系统实际上会尝试冻结 Style 或 ControlTemplate 以使其成为线程安全的。但是,如果存在 DynamicResource 或数据绑定表达式,则无法冻结它们。

有关详细信息,请参阅:MSDN 链接。查看“样式中的动画”和“ControlTemplate 中的动画”部分(此文档页面相当长)。

对于解决方法(至少对于我的场景),请参阅:WPF 论坛帖子

希望这可以帮助某人。我已经失去了足够多的头发。

科里

于 2008-09-30T18:00:59.363 回答
0

在某些情况下,有一种解决方法:

  • 引入附加属性,
  • 使用所需的 setter 为引入的属性指定样式触发器
于 2021-11-22T15:01:03.107 回答