我很好奇是否有可能区分属性值是否由C#/ XAML中的开发人员定义,或者是否具有默认值或计算值。
Visual Studio提供的内容" Live Property Explorer"。
我正在查看Control.GetType().GetProperties()
,但我没有找到任何可以帮助我确定属性值是否由开发人员定义的特定属性。
对于以下Grid
定义,我希望将Background
属性视为本地定义的值,您可以在Visual Studio的屏幕截图中看到它。
<Grid Background="Red"></Grid>
答案 0 :(得分:0)
这一般很难实现。但是,在WPF中,为了找出依赖属性是否具有本地值的具体情况,您可以使用DependencyObject.ReadLocalValue
。
使用
<Grid x:Name="grid"/>
以下表达式为真:
grid.ReadLocalValue(Panel.BackgroundProperty) == DependencyProperty.UnsetValue
而
<Grid x:Name="grid" Background="Red"/>
这是真的:
grid.ReadLocalValue(Panel.BackgroundProperty) == Brushes.Red
如果属性设置为资源,Binding或任何其他local value,则 ReadLocalValue也会返回DependencyProperty.UnsetValue
以外的值。