¿Por qué una implementación de propiedad de dependencia bloqueará mi aplicación cuando proporcione un valor predeterminado?¿Por qué una implementación de propiedad de dependencia bloqueará mi aplicación cuando proporcione un valor predeterminado?
Este segmento de código está en la declaración de clase para mi objeto UserControl. Todo funciona bien, se compila y funciona perfectamente.
public static System.Windows.DependencyProperty DepProp
= System.Windows.DependencyProperty.Register( "Rect",
typeof(System.Windows.Shapes.Rectangle),
typeof(FooControl));
public System.Windows.Shapes.Rectangle Rect
{
get
{ return ((System.Windows.Shapes.Rectangle)(GetValue(DepProp))); }
set
{ SetValue(DepProp, value); }
}
Sin embargo, cuando agrego el valor predeterminado para la propiedad de dependencia:
El código se compila, pero se bloquea con una excepción grave cuando se trata de crear una instancia del control de usuario.
Como referencia, el código se verá así - con la línea PropertyMetadata añadido:
public static System.Windows.DependencyProperty DepProp
= System.Windows.DependencyProperty.Register( "Rect",
typeof(System.Windows.Shapes.Rectangle),
typeof(FooControl),
new System.Windows.PropertyMetadata(new System.Windows.Shapes.Rectangle()));
public System.Windows.Shapes.Rectangle Rect
{
get
{ return ((System.Windows.Shapes.Rectangle)(GetValue(DepProp))); }
set
{ SetValue(DepProp, value); }
}
Extracción de la PropertyMetadata de la llamada a Register() hace que el programa funcione a la perfección, sin ningún tipo de accidentes o cualquier otra problemas. Pero necesito el valor predeterminado para el código posterior. ¿Cómo puedo conseguir que acepte el valor predeterminado sin bloquearse?
Cuando se bloquea, las siguientes excepciones se muestran en la ventana de salida:
A first chance exception of type 'System.ArgumentException' occurred in WindowsBase.dll
A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll
A first chance exception of type 'System.Windows.Markup.XamlParseException' occurred in PresentationFramework.dll
Necesito conseguir este funcionamiento lo antes posible, por lo que cualquier consejo sería increíble!
Si tuviera un rastro de pila, sería extremadamente útil. –
¿De verdad? No tenía idea de que estaba relacionado. Déjame ver lo que se me ocurre ... Puede que no lo haga por un tiempo, ocupado en algo apremiante. – Giffyguy