19

既存の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は単なる列挙子です。

前もって感謝します。

4

1 に答える 1