Windows Phone 8设置了依赖属性的默认属性

本文关键字:属性 默认 依赖 Phone 设置 Windows | 更新日期: 2023-09-27 17:53:16

我正在为我的WP8应用程序创建一个控件。我试图为依赖属性设置值,无论其默认值如何。下面是我的代码

public BitmapImage EnabledImage { get; set; }
    public BitmapImage DisabledImage { get; set; }
    public bool ControlEnabled
    {
        get { return (bool)GetValue(ControlEnabledProperty); }
        set { SetValue(ControlEnabledProperty, value); }
    }
    public static readonly DependencyProperty ControlEnabledProperty =
        DependencyProperty.Register("ControlEnabled", typeof(bool), typeof(ucControl), new PropertyMetadata(OnImageStatePropertyChanged));
    private static void OnImageStatePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var control = (d as ucControl);
        control.ControlEnabled = Convert.ToBoolean(e.NewValue);
        control.OnImageStateChanged(e.NewValue);
    }
    private void OnImageStateChanged(object newValue)
    {
        if (Convert.ToBoolean(newValue) == true)
            imgControl.Source = EnabledImage;
        else
            imgControl.Source = DisabledImage;
    }

这是我在xaml

中的调用方式
<WP8:ucControl Grid.Row="0" Grid.Column="0" Height="92" Width="92" EnabledImage="/Images/img_on.png" DisabledImage="/Images/img_off.png" ControlEnabled="True"/>

当我设置ControlEnabled = "False"时,它不设置值。表示在图像控件上没有设置禁用的图像。

我想让这个控件设置属性,而不管它的默认值。

我参考这篇文章,但解决方案不工作:Windows Phone 8,使用DependencyProperty为用户控制,PropertyChangedCallback和CoerceValueCallback问题

Windows Phone 8设置了依赖属性的默认属性

你可以这样修改你的代码,并尝试:

public static readonly DependencyProperty ControlEnabledProperty =
    DependencyProperty.Register("ControlEnabled", typeof(bool?), typeof(ucControl), new PropertyMetadata(null, OnImageStatePropertyChanged));