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只是一个简单的枚举器。
提前谢谢。
感谢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);
谢谢,希望它也能帮助到未来的某个人。