2009-05-20 13 views
0

Ich finde, dass, wenn ich Abhängigkeitseigenschaften mache, die meisten von ihnen Konflikt mit Namen von Eigenschaften in der UserControl, zB Hintergrund, Breite, etc. so ist meine Strategie Präfix alle meine benutzerdefinierten Eigenschaften mit "The" so Ich habe, zWas ist der beste Weg, um nicht DependencyProperties Konflikt mit tatsächlichen Eigenschaften zu haben?

  • Thebackground
  • die Breite

usw.

Ich versuchte, das "neue" Schlüsselwort, das der Warnung entledigt, aber das führt zur Laufzeit zu Konflikten.

Hat jemand bessere Benennungsstrategien für DependencyProperties in benutzerdefinierten Benutzersteuerelementen gefunden?

public partial class SmartForm : UserControl 
{ 
    public SmartForm() 
    { 
     InitializeComponent(); 
     DataContext = this; 

     TheBackground = "#FFD700"; 
    } 

    #region DependencyProperty: TheBackground 
    public string TheBackground 
    { 
     get 
     { 
      return (string)GetValue(TheBackgroundProperty); 
     } 
     set 
     { 
      SetValue(TheBackgroundProperty, value); 
     } 
    } 

    public static readonly DependencyProperty TheBackgroundProperty = 
     DependencyProperty.Register("TheBackground", typeof(string), typeof(SmartForm), 
     new FrameworkPropertyMetadata()); 
    #endregion 
} 

Antwort

5

Wenn Ihr Usercontrol eine Hintergrundeigenschaft, warum müssen Sie ein anderes hinzufügen?

Wofür ist dieser neue Hintergrund ein Hintergrund? "Das"? Nein? Welchen Hintergrund steuert es dann?

Beenden Sie diesen Satz: "Dies ist die Hintergrundfarbe für das Steuerelement XXXX."

Der Name der Eigenschaft sollte jetzt XXXXBackground sein.

+0

Danke, macht Sinn, funktioniert auch. –

0

Sie meinen, Sie wollen eine Überbrückung ??

In meinem Fall Ich habe Breite nicht als DepedencyProperty

in meiner benutzerdefinierten Kontrolle Ich habe:

public double Width 
    { 
     get 
     { 
      if (_backgroundImage != null) 
       return _backgroundImage.Width; 
      else 
       return double.NaN; 
     } 
     set 
     { 
      if (_backgroundImage != null) 
       _backgroundImage.Width = value; 
     } 
    } 

Der Compiler zeigt mir eine Warnung, aber alles scheint zu funktionieren.