15

Mevcut WPF denetimlerine (Grup kutusu, metin kutusu, onay kutusu vb.) Yeni bir özellik oluşturmalıyım. Ekli Özellikler buldum. ... Ben örnek http://dotnetbyexample.blogspot.com.br/2010/05/attached-dependency-properties-for.htmlC# WPF Eklenen Özellikler - Hata: "Özellik XML ad alanında bulunmuyor"

her şey iyiydi bu site olarak kullanılan, ancak bazı kumanda üzerindeki kullanmaya çalışırken sonra aşağıdaki hata var

Error 1 The property 'DependencyPropertiesHoster.AcessLevel' does not exist in XML namespace 'clr-namespace:ImageGUI.App_Code;assembly=ImageGUI'. Line 131 Position 97. ImageGUI\MainWindow.xaml 131 97 ImageGUI

Bu benim C# kod parçacığı olduğunu ...

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); 
     } 
    } 
} 

} Burada

Pencere

012 benim beyanıdır EAcessLevel sadece basit bir sayım memuru geçerli:
xmlns:CustomDepen="clr-namespace:ImageGUI.App_Code;assembly=ImageGUI" 

Ve burada mülkün benim kullanımı (hata yatıyor ...)

<GroupBox Name="gbApplications" Header="{DynamicResource applications}" CustomDepen:DependencyPropertiesHoster.AcessLevel="Client"> 

Gözlem olduğunu.

Şimdiden teşekkürler.

+3

'AcessLevel',' ImageGUI' aksamında olduğundan emin misiniz? Bildirimi 'assembly = ImageGUI' bölümünü kaldırırsanız çalışır mı? Sonunda bir SO sorusunda yeterli bilgiyi içeren bir kişi için –

+3

+1. @ Bob'un yorumuna eklemek için, eklediğiniz mülkünüz (veya her neyse) XAML'nizle aynı mecliste ise, XML -> CLR ad alanı eşlemenizin 'assembly =' kısmını eklememelisiniz. –

+0

Teşekkürler! Bu kadar basit olduğuna inanamıyorum, ama olduğuna sevindim. Sadece sonlandırma parçasını çıkarmak onu sabitlemiştir (assembly = ...). Ama bu özelliği kodda nasıl geçebilirim acaba? Şimdi nasıl programlı olarak alabilirim? mükemmel senaryo örneği: EAcessLevel controlAcess = gbApplications.AcessLevel; – Luishg

cevap

14

Yanıt için Bob ve Kent'e teşekkürler, bu sorunu çok çözdü. Sadece

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

için

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

değişen Bu senaryoda durumu sabit. Diğer her şey doğruydu.

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

sayesinde ve aynı zamanda gelecekte birilerine yardımcı olur umarım:

belirtilen değeri alma hakkında benim diğer yorum ile ilgili, öyle olurdu.

İlgili konular