既存のWPFコントロール(グループボックス、テキストボックス、チェックボックスなど)に新しいプロパティを作成する必要があります。これは、アクセスレベルを格納するものであるため、添付プロパティを見つけました。このサイトを例として使用しましたhttp://dotnetbyexample.blogspot.com.br/2010/05/attached-dependency-properties-for.html
すべて問題ありませんでしたが、コントロールで使用しようとすると、次のエラーが発生しました...
エラー1プロパティ'DependencyPropertiesHoster.AcessLevel'はXML名前空間'clr-namespace:ImageGUI.App_Code; assembly=ImageGUI'に存在しません。行131の位置97。ImageGUI\MainWindow.xaml131 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は単なる列挙子です。
前もって感謝します。