没有DependencyProperties与实际属性冲突的最佳方法是什么?

时间:2009-05-20 14:19:51

标签: wpf user-controls dependency-properties

我发现当我创建依赖属性时,大多数冲突与UserControl中的属性名称,例如背景,宽度等,所以我的策略是为我的所有内容添加前缀自定义属性“The”所以我有,例如<​​/ p>

  • 后台运行此程序
  • TheWidth

我尝试使用“new”关键字来消除警告,但这会在运行时导致冲突。

是否有人在自定义用户控件中为DependencyProperties提供更好的命名策略?

public partial class SmartForm : UserControl
{
    public SmartForm()
    {
        InitializeComponent();
        DataContext = this;

        TheBackground = "#FFD700";
    }

    #region DependencyProperty: TheBackground
    public string TheBackground
    {
        get
        {
            return (string)GetValue(TheBackgroundProperty);
        }
        set
        {
            SetValue(TheBackgroundProperty, value);
        }
    }

    public static readonly DependencyProperty TheBackgroundProperty =
        DependencyProperty.Register("TheBackground", typeof(string), typeof(SmartForm),
        new FrameworkPropertyMetadata());
    #endregion
}

2 个答案:

答案 0 :(得分:5)

如果您的UserControl具有背景属性,为什么还要添加另一个?

这个新背景是什么背景? “该”?没有?那么它控制的背景是什么?

完成这句话:“这是XXXX控件的背景颜色。”

属性名称现在应为XXXXBackground。

答案 1 :(得分:0)

你的意思是你想要一个覆盖?

在我的情况下,我不将Width作为DepedencyProperty

在我的自定义控件中我有:

    public double Width
    {
        get
        {
            if (_backgroundImage != null)
                return _backgroundImage.Width;
            else
                return double.NaN;
        }
        set
        {
            if (_backgroundImage != null)
                _backgroundImage.Width = value;
        }
    }

编译器向我显示警告,但一切似乎都有效。