WPF: Enumerations Property wirft Fehler im Designer

24/01/2009 - 15:40 von Chris Oertel | Report spam
Hallo,
ich habe mir ein eiges Control "gebastelt" welches ich von der TextBox
abgleitet habe:

public class LabelTextBox : TextBox

Diesem Control habe ich dann folgende Property hinzugefügt:

public enAdornerPosition LabelPosition
{
get
{ return moAdoner.Position; }
set
{ moAdoner.Position = value; }
}

Das Enum (und der TypeConverter) dazu sieht inzwischen wie folgt aus:

[System.ComponentModel.TypeConverter(typeof (AdornerPositionConverter))]
public enum enAdornerPosition
{
Left = 0,
Top
}

public class AdornerPositionConverter :
System.ComponentModel.TypeConverter
{
public override object
ConvertFrom(System.ComponentModel.ITypeDescriptorContext context,
System.Globalization.CultureInfo culture, object value)
{
if (value is string)
{
switch (value.ToString())
{
case "Left":
return enAdornerPosition.Left;
case "Top":
return enAdornerPosition.Top;
}
}
return base.ConvertFrom(context, culture, value);
}
}

Das Ganze führt jetzt zu folgendem Effekt bei mir, wenn ich das Control wie
folgt auf eine Oberflàche bringe:

<coe:LabelTextBox LabelPosition="Top"/>

-Im VS Designer / Blend 2 wird folgender Fehler zur Entwurfszeit beim Design
der Oberflàche geworfen:

Value 'Top' cannot be assigned to property 'LabelPosition'. Property
'LabelPosition' of type 'enAdornerPosition' cannot be specified as a string.

-Wenn ich das Programm starte, dann greift der TypeConverter, das Programm
startet fehlerfrei und die Property wird korrekt ausgewertet.

Kann mir jemand sagen, wo mein Denkfehler liegt, bzw. was ich beachten muß,
damit die Property richtig im Designer ausgewertet wird?

Danke,
Chris
 

Lesen sie die antworten

#1 Elmar Boye
24/01/2009 - 17:06 | Warnen spam
Hallo Chris,

"Chris Oertel" schrieb ...
ich habe mir ein eiges Control "gebastelt" welches ich von der TextBox
abgleitet habe:



WPF hat seine eignenen Regeln die man beim Entwurf von abgeleiteten
Steuerelementen beachten sollte,

public class LabelTextBox : TextBox

Diesem Control habe ich dann folgende Property hinzugefügt:



Eigenschaften werden über DependencyProperty implementiert,
folgendes solltest Du durcharbeiten:
URL:http://msdn.microsoft.com/de-de/lib...52914.aspx
"Übersicht über Abhàngigkeitseigenschaften"

Gruß Elmar

Ähnliche fragen