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);
спасибо, и надеюсь, что это помогает кто-то в будущем.