Свойство не существует в пространстве имен XML - PullRequest
1 голос
/ 26 октября 2010

В настоящее время я работаю над включением поддержки перетаскивания для нашего фирменного приложения.
Ошибка, которую я продолжаю получать, кажется мне странной.
Это говорит о том, что

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 - приложение скомпилировано ОК

Ответы [ 4 ]

2 голосов
/ 03 января 2011

Проблема решена.Моя ошибка была в том, что я не перекомпилировал библиотеку после добавления прикрепленного свойства.После этого все работает как положено.Извините всех: (

2 голосов
/ 06 ноября 2013

Извините за некро ... просто подумала, что поделюсь тем, что произошло в моем подобном сценарии.Я скопировал свой View из внешнего проекта, который внутренне ссылался на пространство имен поведения:

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

Для этого работали две вещи.Во-первых, xmlns необходимо явно ссылаться на сборку для класса поведения, например:

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

Во-вторых, я временно удалил вторую строку и сначала перестроил свое решение .VS2012 иногда суетится в узел, когда вы клонируете проекты WPF, и хорошая очистка и перестройка без оскорбительной строки часто исправляет проблемы (он распознал поведение после того, как я снова добавил строку).

0 голосов
/ 10 сентября 2018

Я получил эту ошибку, когда определил элемент управления (кнопка в моем случае) перед определением обработчика.Мне пришлось удалить кнопку и переопределить ее после создания метода, чтобы очистить ошибку.

0 голосов
/ 30 декабря 2010

У меня была точно такая же проблема, как и у вас.Я заставил его работать, поместив атрибут [AttachedPropertyBrowsableForChildren] над моим методом установки.Не спрашивай меня почему, это просто сработало ...

...