wpf - XML 命名空间中不存在该属性

标签 wpf attached-properties

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

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 标记中设置属性值 - 应用程序编译正常

最佳答案

对死灵感到抱歉...只是想分享一下在我的类似场景中发生的事情。我从外部项目复制了 View ,该项目在内部引用了行为的命名空间:

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

要实现此功能,需要完成两件事。首先,xmlns 需要显式引用行为类的程序集,如下所示:

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

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

关于wpf - XML 命名空间中不存在该属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4024865/

相关文章:

c# - 对 XamDataGrid 使用复杂字段

.net - 如何在 XAML 中引用当前对象

c# - WPF 使用附加属性和行为执行 ICommand

wpf - 以编程方式绑定(bind) WPF 中的附加属性

wpf - WPF中图像的淡入淡出

.net - 重新创建上下文时,wpf mvvm datagrid丢失排序

wpf - 如何将 GridSplitter 设置为特定的初始位置?

c# - 如何序列化附加属性

Silverlight ComboBox 附加行为

WPF TextBox lostfocus 作为附加属性