问题标签 [freezable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - 如何设置子代理相对于 DataContext 的绑定?
我查看了很多主题,但它们都以某种方式与 UI 元素的 DataContext 的定义有关。
我有一项任务需要完全不同的方法。不管我对这个决定有多么困惑,我什么都想不起来。
问题描述。
最初,有一个简单的代理:
如果你在任何元素的 Resources 中设置它,那么它可以通过一个简单的 Binding 获取 DataContext:
同样,任何没有明确指定源的 Bindig 都将使用其资源中的代理实例被声明为源的元素的 DataContext。
子代理注入。
现在,对于某个任务(它的条件与问题无关,所以我不会描述它)我需要一个嵌套(子)代理,它也可以分配一个相对于数据上下文的绑定。
我需要在代码中设置这个绑定。
一个高度简化的演示示例:
父代理绑定按预期工作。
但是链接一个孩子不会返回任何东西。
如何为孩子设置正确的绑定?
c# - 缓动功能而不从 Freezable 继承?
我正在尝试实现一个自定义IEasingFunction
,它基本上是另一个的包装器,IEasingFunction
但它在动画的开头和结尾添加了一个暂停。我不希望它继承,EasingFunctionBase
因为在 PausingEasingFunction 上有一个 EasingMode 是没有意义的。无论您使用哪种模式,暂停都是相同的,并且被包装的模式可以自行指定其模式。
这是它的外观:PausingEasingFunction.cs
问题是,当我尝试使用以下 xaml 在动画中使用它时(local:
指的是 xmlns 指向包含的 clr 命名空间PausingEasingFunction
):
抛出 InvalidOperationException,告诉我无法冻结 Freezable。但是,如果我将PausingEasingFunction.cs更改为继承,Freezable
而不是通过DependencyObject
这种方式实现 CreateInstanceCore:
不再抛出异常。经过一番调查,我发现 WPF 仍然试图冻结东西,即使它们有 CanFreeze = false 但我不确定这是否真的是问题所在......
这是一个WPF错误吗?难道我做错了什么?或者为什么我被迫从 Freezable 继承?