为什么我不能在某个类库中的另一个类中创建Dependency属性

时间:2012-05-23 06:33:34

标签: wpf

  

我正在尝试在一个名为的类中创建一个依赖项属性   “FocusBehaviour”是在类库中。我已添加了   如下所示的名称空间..但它在第1行显示错误返回   (布尔)control.GetValue(FocusFirstProperty);

     

错误:System.windows.Controls.Control没有方法   'GetValue'接受类型的第一个参数   System.windows.Controls.Control。 2)同样的错误来自   SetValue()也......低于... 3)控制控制= dpObj作为控制;   错误:无法将System.DependencyObject转换为   System.windows.Controls.Control

     

我还添加了WindowsBase参考..

  using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;

namespace MyOrgBI
{
    public static class FocusBehavior:DependencyObject
    {

        public static readonly DependencyProperty FocusFirstProperty = 
        DependencyProperty.RegisterAttached("FocusFirst", 
                                            typeof(bool),
                                            typeof(Control),
                                            new PropertyMetadata(OnFocusFirstPropertyChanged));

    public static bool GetFocusFirst(Control control)
    {
        return (bool)control.GetValue(FocusFirstProperty);
    }
    public static void SetFocusFirst(Control control, bool value)
    {
        control.SetValue(FocusFirstProperty, value);
    }
    static void OnFocusFirstPropertyChanged(DependencyObject dpObj, DependencyPropertyChangedEventArgs args)
    {
        Control control = dpObj as Control;
        if (control == null || !(args.NewValue is bool))
        {
            return;
        }
        if ((bool)args.NewValue)
        {
            control.Loaded += (sender, e) => control.MoveFocus(new TraversalRequest(FocusNavigationDirection.First));
        }
    }
}

}

以前我在WpfApplication项目中创建了一个依赖项属性。它工作正常,但是当我在另一个类库中创建一个时,它显示了这个错误。

为什么会出现这些错误?我应该怎么写这段代码?

2 个答案:

答案 0 :(得分:2)

DependencyObject

中导出您的课程
public static class FocusBehavior : DependencyObject
{
    ...
}

答案 1 :(得分:1)

您需要添加对WindowsBase程序集的引用。 DependencyObject位于那里。