C# WPF вложенные свойства-ошибка: "свойство не существует в пространстве имен XML"

мне нужно создать новое свойство для существующих элементов управления WPF (Groupbox, textbox, checkbox и т. д.), которое будет хранить его уровень acess, поэтому я узнал прикрепленные свойства. Я использовал в качестве примера этот сайт http://dotnetbyexample.blogspot.com.br/2010/05/attached-dependency-properties-for.html

все было хорошо, но затем я получил следующую ошибку при попытке использовать его на каком-то элементе управления...

Ошибка 1 свойство 'DependencyPropertiesHoster.AcessLevel "не существует в пространстве имен XML" clr-пространство имен: ImageGUI.App_Code; assembly=ImageGUI'. Линия 131 Позиция 97. ImageGUIMainWindow.xaml 131 97 ImageGUI

Это мой фрагмент кода на C#...

namespace ImageGUI.App_Code
{    
    public static class DependencyPropertiesHoster
    {
    //[AttachedPropertyBrowsableForChildren]
    public static readonly DependencyProperty AcessLevelProperty =
      DependencyProperty.RegisterAttached("AcessLevel",
      typeof(EAcessLevel),
      typeof(DependencyPropertiesHoster),
      new PropertyMetadata(AcessLevelChanged));

    // Called when Property is retrieved
    public static EAcessLevel GetAcessLevel(DependencyObject obj)
    {
        if (obj != null)
            return (EAcessLevel)obj.GetValue(AcessLevelProperty);
        else
            return EAcessLevel.Client;
        //return obj.GetValue(AcessLevelProperty) as EAcessLevel;

    }

    // Called when Property is set
    public static void SetAcessLevel(
       DependencyObject obj,
       EAcessLevel value)
    {
        obj.SetValue(AcessLevelProperty, value);
    }

    // Called when property is changed
    private static void AcessLevelChanged(
     object sender,
     DependencyPropertyChangedEventArgs args)
    {
        var attachedObject = sender as UIElement;
        if (attachedObject != null)
        {
            // do whatever is necessary, for example
            // attachedObject.CallSomeMethod(                 
            // args.NewValue as TargetPropertyType);
        }
    }
}

}

вот моя декларация в окне

xmlns:CustomDepen="clr-namespace:ImageGUI.App_Code;assembly=ImageGUI"

и вот мое использование свойства (где лежит ошибка...)

<GroupBox Name="gbApplications" Header="{DynamicResource applications}" CustomDepen:DependencyPropertiesHoster.AcessLevel="Client">

наблюдение: EAcessLevel - это просто перечислитель.

спасибо заранее.

1 ответов


спасибо Бобу и Кенту за ответы, это в значительной степени решило проблему. В этом сценарии просто меняется

xmlns:CustomDepen="clr-namespace:ImageGUI.App_Code;assembly=ImageGUI"

to

xmlns:CustomDepen="clr-namespace:ImageGUI.App_Code"

исправлена ситуация. Все остальное было правильно.

Что касается моего другого комментария о том, как получить указанное значение, это было бы так:

EAcessLevel currentAcess = (EAcessLevel)gbApplications.GetValue(DependencyPropertiesHoster.AcessLevelProperty);

спасибо, и надеюсь, что это помогает кто-то в будущем.