2

我目前正在为我们的公司应用程序启用拖放支持。
我不断收到的错误对我来说似乎很奇怪。
这说的是

The property 'DragDropHelper.IsDragSource' does not exist in XML namespace 'clr-namespace:DragAndDrop;assembly=DragAndDrop'. Line 61 Position 83

该属性是我在示例中的 Internet 中找到的类中的附加属性,并对其进行了一些修改。这是属性声明:

namespace DragAndDrop {
public class DragDropHelper
{
    public static readonly DependencyProperty IsDragSourceProperty =    
        DependencyProperty.RegisterAttached("IsDragSource", typeof (bool), typeof (DragDropHelper),
                                            new UIPropertyMetadata(false, IsDragSourceChanged));

    public static bool GetIsDragSource(DependencyObject obj)
    {
        return (bool) obj.GetValue(IsDragSourceProperty);
    }

    public static void SetIsDragSource(DependencyObject obj, bool value)
    {
        obj.SetValue(IsDragSourceProperty, value);
    }

在我看来,附加财产是完全有效的,不是吗?这个 DragDropHelper 包含在一个类库中,我从主客户端应用程序中引用了该类库。当我尝试在客户端应用程序中设置属性值时:

 <ListView x:Uid="list" x:Name="CurrentFolderItemsControl" drag:DragDropHelper.IsDragSource="true" />

VS2010 说 XML 命名空间中不存在该属性。XAML 文档是一个资源字典,它被合并到主客户端应用程序资源中,因为它包含我们控件的样式。
更奇怪的是,我在主应用程序中创建了一个附加属性的类,然后在 XAML 标记中设置属性值 - 应用程序编译正常

4

4 回答 4

3

对不起死灵......只是想我会分享在我的类似场景中发生的事情。我从外部项目中复制了我的视图,该项目在内部引用了行为的命名空间:

xmlns:b="clr-namespace:MyCompany.Common.Behaviours"
b:WindowBehaviours.Close="{Binding ClosingView}"

要使其发挥作用,需要做两件事。首先,xmlns 需要显式引用行为类的程序集,如下所示:

xmlns:b="clr-namespace:MyCompany.Common.Behaviours;assembly=Common"

其次,我暂时删除了第二行并首先重建了我的解决方案。当您克隆 WPF 项目时,VS2012 有时会打结,而没有违规行的良好 Clean & Rebuild 通常可以解决问题(在我再次添加该行后它识别出该行为)。

于 2013-11-06T08:38:00.760 回答
2

问题解决了。我的错误是添加附加属性后我没有重新编译库。在我这样做之后,一切都按预期工作。对不起大家:(

于 2011-01-03T12:38:00.930 回答
0

我遇到了和你一样的问题。我通过将[AttachedPropertyBrowsableForChildren]属性放在我的 setter 方法上方来让它工作。不要问我为什么,它只是工作......

于 2010-12-30T10:09:46.320 回答
0

在定义处理程序之前定义控件(在我的情况下为按钮)时出现此错误。在创建清除错误的方法后,我不得不删除按钮并重新定义它。

于 2018-09-10T20:30:00.083 回答