使用GetValueSource方法获取依赖属性的源

from:

http://wpf.2000things.com/2010/12/05/146-use-getvaluesource-method-to-find-the-source-of-a-dependency-property-value/

It’s often helpful to determine the source of the current value of a dependency property. You can use theDependencyPropertyHelper.GetValueSourcemethod to do this.

In the following example,the source for the value of theForegroundproperty alternates between the style and the style trigger,based on the value of theIsEnabledproperty.

<Window.Resources>
    <Style x:Key="redgreenButton" targettype="{x:Type Button}">
        <Setter Property="Foreground" Value="Green"/>
        <Style.Triggers>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Foreground" Value="Red"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Resources>
<StackPanel Orientation="Vertical">
    <Button Content="A Button" Height="23" Width="75" Style="{StaticResource redgreenButton}" Name="btnTest"/>
    <Button Content="Enable/disable" Height="24" Width="100" Name="btndisable" Click="btndisable_Click"/>
    <Button Content="display Source" Height="24" Width="100" Name="btndisplay" Click="btndisplay_Click"/>
</StackPanel>

Here’s the code for the display button’s Click event,which uses GetValueSource to report the base value source.

private void btndisplay_Click(object sender,RoutedEventArgs e)
{
    ValueSource vs = DependencyPropertyHelper.GetValueSource(btnTest as DependencyObject,Button.ForegroundProperty);
    MessageBox.Show(string.Format("Source for Foreground property: {0}",vs.BaseValueSource));
}

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...