使用自定义控件在Silverlight中设置样式与内联属性

时间:2015-06-15 19:45:30

标签: c# wpf xaml silverlight

我有一个自定义的silverlight控件,几乎是一个美化的文本框。我有一些属性,我需要能够从Silverlight中的XAML进行设置,因此对于我创建的每个属性都是这样的:

public bool UseCustomTooltips
    {
        get { return _useCustomTooltips; }
        set
        {
            _useCustomTooltips = value;
            DoSomeOtherStuff();
        }
    }

public static readonly DependencyProperty UseCustomTooltipsProperty = DependencyProperty.Register("UseCustomTooltips",
        typeof(bool), typeof(MyControl), new PropertyMetadata(false, PropertyChangedCallback));

在XAML中,我可以创建控件并为该属性指定一个值,如下所示:

<Controls:MyControl UseCustomTooltips="True" />

控件的状态是更新,我的回调被击中,一切都是应该的。但是,当我尝试从样式而不是在每个控件实例中指定该状态时,如下所示:

<Style x:Key="MyControl" TargetType="Controls:MyControl">
    <Setter Property="Foreground" Value="Yellow"/>
    <Setter Property="UseCustomTooltips" Value="True"/>
</Style>

<Controls:MyControl Style="{StaticResource MyControl}" />

我的自定义属性永远不会被设置,即使继承的属性Foreground采用样式中指定的值,我的回调也永远不会被命中。这导致我假设我的依赖属性连接的方式有问题,但到目前为止我在网上看到的所有内容都告诉我,我的方法是正确的。

有人能指出我正确的方向吗? 感谢。

1 个答案:

答案 0 :(得分:2)

这不是注册依赖项属性的正确方法。

    public bool UseCustomTooltips
    {
        get { return (bool)GetValue(UseCustomTooltipsProperty); }
        set { SetValue(UseCustomTooltipsProperty, value); }
    }

    public static readonly DependencyProperty UseCustomTooltipsProperty =
        DependencyProperty.Register("UseCustomTooltips", 
        typeof(bool),
        typeof(MyControl), 
        new PropertyMetadata(false, new PropertyChangedCallback(MyCallbackMethod)));

使用propdp代码段,它确实很棒。