检查开发人员是否定义了属性值

时间:2017-07-27 12:49:00

标签: c# wpf xaml uwp

我很好奇是否有可能区分属性值是否由C#/ XAML中的开发人员定义,或者是否具有默认值或计算值。

Visual Studio提供的内容" Live Property Explorer"。

我正在查看Control.GetType().GetProperties(),但我没有找到任何可以帮助我确定属性值是否由开发人员定义的特定属性。

对于以下Grid定义,我希望将Background属性视为本地定义的值,您可以在Visual Studio的屏幕截图中看到它。

<Grid Background="Red"></Grid>

enter image description here

1 个答案:

答案 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以外的值。