我目前正致力于为我们的公司应用程序启用拖放支持。
我不断得到的错误对我来说似乎很奇怪。
这说的是
The property 'DragDropHelper.IsDragSource' does not exist in XML namespace 'clr-namespace:DragAndDrop;assembly=DragAndDrop'. Line 61 Position 83
该属性是我在互联网上找到的类中的附加属性,并对其进行了一些修改。这是财产声明:
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文档是资源字典 它合并到主客户端应用程序资源中,因为它包含我们控件的样式 这更奇怪,因为我在主app中创建了一个附加属性的类,然后在XAML标记中设置属性值 - app编译好了
答案 0 :(得分:2)
问题解决了。我的错误是在添加附加属性后我没有重新编译库。在我这样做之后,一切都按预期工作。对不起大家:(
答案 1 :(得分:2)
对不起该死讯...只是想我会分享我类似场景中发生的事情。我从外部项目中复制了我的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有时会打结,并且一个好的Clean&amp;没有违规行的重建经常修复事情(它在我再次添加行后识别出行为)。
答案 2 :(得分:0)
我遇到了与你完全相同的问题。我通过将[AttachedPropertyBrowsableForChildren]
属性放在我的setter方法之上来实现它。不要问我为什么,它只是起作用......
答案 3 :(得分:0)
在定义处理程序之前定义控件(在我的情况下为按钮)时出现此错误。在创建清除错误的方法后,我不得不删除按钮并重新定义它。