有一个奇怪的要求。当动态资源相对于 FrameworkElement 发生更改时,我需要得到通知,但我没有在该 FrameworkElement 上设置属性。因此,我不能{DynamicResource someKey}
在 XAML 中使用,也不能someElement.SetResourceReference()
在代码隐藏中使用。
现在获取当前值很容易。您只需调用即可someElement.FindResource("someKey")
获得当前值,但这需要轮询。
我考虑创建一个人造绑定源对象,然后我可以绑定到该对象,但问题是它不是可视化树的一部分,因此除非该资源是在应用程序级别定义的,否则您将无法获得它。你也不能把东西塞进视觉树。
我已经看到一个使用可以定义 DependencyProperty 的行为的答案,并且当附加到 FrameworkElement 时,它们确实会像人们所怀疑的那样进行更新,但这需要 XAML,因为我不知道如何调用 FrameworkElement 的 setResourceReference 的等效行为.
所以……想法?