问题标签 [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.

0 投票
2 回答
115 浏览

wpf - 如何设置子代理相对于 DataContext 的绑定?

我查看了很多主题,但它们都以某种方式与 UI 元素的 DataContext 的定义有关。

我有一项任务需要完全不同的方法。不管我对这个决定有多么困惑,我什么都想不起来。

问题描述。
最初,有一个简单的代理:

如果你在任何元素的 Resources 中设置它,那么它可以通过一个简单的 Binding 获取 DataContext:

同样,任何没有明确指定源的 Bindig 都将使用其资源中的代理实例被声明为源的元素的 DataContext。

子代理注入。
现在,对于某个任务(它的条件与问题无关,所以我不会描述它)我需要一个嵌套(子)代理,它也可以分配一个相对于数据上下文的绑定。
我需要在代码中设置这个绑定。

一个高度简化的演示示例:

父代理绑定按预期工作。
但是链接一个孩子不会返回任何东西。

如何为孩子设置正确的绑定?

0 投票
0 回答
53 浏览

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 继承?