2010-10-26 64 views
1

我目前正致力於爲我們公司的應用程序啓用拖放支持。
我不斷收到的錯誤對我來說似乎很奇怪。
它說的是,該屬性在XML命名空間中不存在

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文檔是資源字典 ,它合併到主客戶端應用程序資源中,因爲它包含我們控制的樣式。
,因爲我創建以來附加屬性,然後設置屬性值在XAML標記主應用程序中的類這更奇怪 - 編譯OK

+0

DragDropHelper類位於什麼組合? – 2010-10-26 14:59:54

+0

DragDropHelper類位於單獨的類庫中,並且我從主客戶端應用程序引用庫 – chester89 2010-10-26 15:02:26

+0

您是如何在XAML中聲明名稱空間的? (xmlns:drag =「...」) – 2010-10-26 15:57:05

回答

2

問題解決了。我的錯誤是我添加附加屬性後沒有重新編譯庫。在我這樣做後,一切都按預期工作。對不起大家:(

0

我有完全一樣的問題,因爲你做的應用程序。我通過將[AttachedPropertyBrowsableForChildren]屬性放在我的setter方法上面來實現它。不要問我爲什麼,它只是工作...

+1

沒有爲我工作。 – yonexbat 2011-09-03 10:12:30

1

很抱歉的死靈...只是想我會分享我在類似的情況發生了什麼事我複製從外部項目,該項目內部參考的行爲的命名空間我的觀點:

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

兩件事情這個工作首先,XMLNS需要明確引用的程序集的行爲類,像這樣:

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

其次,我暫時刪除第二行和重建我的解決方案杉st。當你克隆WPF項目時,VS2012有時會得到它的內褲,並且在沒有違規行的情況下重建會很好地修復事件(它會在我將行重新添加回來後識別行爲)。

相關問題