C#WPF附加属性-错误:";该属性不存在于XML命名空间""中

本文关键字:quot 属性 不存在 XML 命名空间 错误 C#WPF | 更新日期: 2023-09-27 18:03:58

我需要为现有的WPF控件(Groupbox、textbox、checkbox等(创建一个新的属性,该属性将存储其访问级别,因此我找到了附加属性。我以这个网站为例http://dotnetbyexample.blogspot.com.br/2010/05/attached-dependency-properties-for.html

一切都很好,但后来我在尝试将其用于某些控制时出现了以下错误。。。

错误1 XML命名空间"clr namespace:ImageGUI.App_Code;"中不存在属性"DependencyPropertyHoster.AcessLevel";assembly=ImageGUI'。线路131位置97。ImageGUI''MainWindow.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只是一个简单的枚举器。

提前谢谢。

C#WPF附加属性-错误:";该属性不存在于XML命名空间""中

感谢Bob和Kent的回答,这基本上解决了问题。在这种情况下,只需更改

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

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

修复了这种情况。其他一切都是正确的。

关于我关于如何检索指定值的其他评论,它是这样的:

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

谢谢,希望它也能帮助到未来的某个人。