有谁知道如何确定WPF属性的值是否被继承?特别是,我试图确定FrameworkElement
的DataContext
是从父项继承还是直接在元素本身上设置。确定是否继承WPF DependencyProperty值
10
A
回答
0
更多挖
有一个ReadLocalValue
方法,这是愚蠢的阅读,而不是得到这么难在智能感知被发现后更新。 (我认为Apress的WPF书实际上有一个关于这个的注释。)如果没有设置该值,它将返回UnsetValue。
if (ReadLocalValue(Control.DataContextProperty) !=
DependencyProperty.UnsetValue)
{
// Data context was set locally.
}
如果你因为某些原因需要得到所有本地设置属性,可以使用LocalValueEnumerator。
LocalValueEnumerator enumerator = GetLocalValueEnumerator();
while (enumerator.MoveNext())
{
if (enumerator.Current.Property == Control.DataContextProperty)
{
// DataContext was set locally
}
}
而这两个方法真的让我感到惊讶。在GetLocalValueEnumerator中读取而不是读取ReadLocalValue和一个不能用foreach迭代的集合。这就像.Net拥有这些WPF团队决定忽略的标准事物。
15
DependencyPropertyHelper.GetValueSource
会给你一个ValueSource
,其中包括一个属性检索BaseValueSource
。 BaseValueSource
枚举告诉你DependencyProperty
从哪里获取它的值,比如从父项继承,通过样式设置或在本地设置。
0
枚举器是标准的,他们只是没有提供一个使用该枚举器的集合作为它的GetEnumerator方法(这是什么使For Each工作)的结果。另外,从我的经验来看,用枚举数而不是集合来编写分层算法通常更容易,所以我不会惊讶他们不会提供这个。
相关问题
- 1. WPF - 自定义控制 - 继承的DependencyProperty和PropertyChangedCallback
- 2. 是否正确Event + DependencyProperty?
- 3. 是否可以在派生类中更改继承的DependencyProperty的DescriptionAttribute值?
- 4. Square是否正确地从Rectangle继承?
- 5. 从内建类继承是否正确?
- 6. WPF UserControl如何继承WPF UserControl?
- 7. DataBinding不适用于继承DependencyProperty
- 8. Wpf xaml继承
- 9. WPF InkCanvas继承
- 10. wpf财产继承
- 11. 如何确定类是否从基类间接继承?
- 12. 确定最佳继承图
- 13. WPF风格继承
- 14. WPF模板继承
- 15. WPF窗口继承
- 16. 是否可以继承XAML?
- 17. OpenLDAP是否支持继承?
- 18. 是否可以继承System.Net.Mail.Mailmessage?
- 19. 是否可以继承MKPolyline
- 20. 是否支持CSS继承
- 21. WPF DependencyProperty和数据绑定
- 22. 自定义DependencyObject继承树
- 23. wpf - 用户控件继承
- 24. 继承的类是否继承嵌套的类?
- 25. 从Java类继承的Kotlin类是否也从Any继承?
- 26. 如何确定Control.Visible是通过属性设置还是值被继承
- 27. WPF中模板的继承
- 28. WPF - 反思控制继承
- 29. WPF依赖属性继承
- 30. 在WPF中继承属性
我之前使用'ReadLocalValue'来确定是否在自定义'Panel'中设置了一个值。它导致了一些非常奇怪的行为,当一个值被一个样式应用时,我的面板仍然会认为这个值没有设置。只有在调用'SetValue'时,面板才会按照它们应该的方式开始概述我的元素,尽管'GetValue'确实返回了值。去了解正确的方法是按[肯特的答案](http://stackoverflow.com/a/809480/590790),它给你的所有信息,而不仅仅是副作用(本地值)。 – 2015-02-22 23:20:28