+2005-07-06 Iain McCoy <iain@mccoy.id.au>
+
+ * System.Windows/DependencyObject.cs,
+ System.Windows/DependencyProperty.cs,
+ System.Windows/PropertyMetadata.cs,
+ System.Windows/Callbacks.cs: Added constructors to PropertyMetadata,
+ added support for default values of properties
+
2005-07-02 Iain McCoy <iain@mccoy.id.au>
* whole folder: initial implementation of the DependencyProperty
public delegate bool ValidateValueCallback(object value);
public delegate void PropertyInvalidatedCallback(DependencyObject d);
public delegate Object GetValueOverride(DependencyObject d);
+ public delegate Object SetValueOverride(DependencyObject d);
public delegate Object ReadLocalValueOverride(DependencyObject d);
public delegate void WriteLocalValueOverride(DependencyObject d, Object value);
}
public object GetValue(DependencyProperty dp)
{
- return properties[dp];
+ object val = properties[dp];
+ if (val == null)
+ val = dp.DefaultMetadata.DefaultValue;
+ return val;
}
[MonoTODO()]
private DependencyProperty (bool isAttached, string name, Type propertyType, Type ownerType, PropertyMetadata defaultMetadata, ValidateValueCallback validateValueCallback)
{
this.isAttached = isAttached;
- this.defaultMetadata = defaultMetadata;
+ this.defaultMetadata = (defaultMetadata == null ? new PropertyMetadata() : defaultMetadata);
this.name = name;
this.ownerType = ownerType;
this.propertyType = propertyType;
public static DependencyProperty RegisterAttached(string name, Type propertyType, Type ownerType, PropertyMetadata defaultMetadata, ValidateValueCallback validateValueCallback)
{
- DependencyProperty dp = new DependencyProperty(true, name, propertyType, null, null, null);
+ DependencyProperty dp = new DependencyProperty(true, name, propertyType, ownerType, defaultMetadata, validateValueCallback);
DependencyObject.register(ownerType, dp);
return dp;
}
public class PropertyMetadata {
private object defaultValue;
private GetValueOverride getValueOverride;
+ private SetValueOverride setValueOverride;
private bool isSealed;
private PropertyInvalidatedCallback propertyInvalidatedCallback;
private ReadLocalValueOverride readLocalValueOverride;
set { writeLocalValueOverride = value; }
}
+ public PropertyMetadata()
+ {
+ }
+ public PropertyMetadata(GetValueOverride getValueOverride)
+ {
+ this.getValueOverride = getValueOverride;
+ }
+ public PropertyMetadata(GetValueOverride getValueOverride, SetValueOverride setValueOverride)
+ {
+ this.getValueOverride = getValueOverride;
+ this.setValueOverride = setValueOverride;
+ }
+ public PropertyMetadata(object defaultValue)
+ {
+ this.defaultValue = defaultValue;
+ }
+ public PropertyMetadata(object defaultValue, PropertyInvalidatedCallback propertyInvalidatedCallback)
+ {
+ this.defaultValue = defaultValue;
+ this.propertyInvalidatedCallback = propertyInvalidatedCallback;
+ }
+
+ public PropertyMetadata(object defaultValue, PropertyInvalidatedCallback propertyInvalidatedCallback, GetValueOverride getValueOverride)
+ {
+ this.defaultValue = defaultValue;
+ this.propertyInvalidatedCallback = propertyInvalidatedCallback;
+ this.getValueOverride = getValueOverride;
+ }
+ public PropertyMetadata(object defaultValue, PropertyInvalidatedCallback propertyInvalidatedCallback, GetValueOverride getValueOverride, SetValueOverride setValueOverride)
+ {
+ this.defaultValue = defaultValue;
+ this.propertyInvalidatedCallback = propertyInvalidatedCallback;
+ this.getValueOverride = getValueOverride;
+ this.setValueOverride = setValueOverride;
+ }
+ public PropertyMetadata(PropertyInvalidatedCallback propertyInvalidatedCallback)
+ {
+ this.propertyInvalidatedCallback = propertyInvalidatedCallback;
+ }
+ public PropertyMetadata(PropertyInvalidatedCallback propertyInvalidatedCallback, GetValueOverride getValueOverride)
+ {
+ this.propertyInvalidatedCallback = propertyInvalidatedCallback;
+ this.getValueOverride = getValueOverride;
+ }
+ public PropertyMetadata(PropertyInvalidatedCallback propertyInvalidatedCallback, GetValueOverride getValueOverride, SetValueOverride setValueOverride)
+ {
+ this.propertyInvalidatedCallback = propertyInvalidatedCallback;
+ this.getValueOverride = getValueOverride;
+ this.setValueOverride = setValueOverride;
+ }
+
[MonoTODO()]
protected void ClearCachedDefaultValue (DependencyObject owner)
{
+2005-07-06 Iain McCoy <iain@mccoy.id.au>
+
+ * demo/TestVocab/ConsoleApp.cs: remove default value hack, since we
+ have proper default value support now
+
2005-07-05 Iain McCoy <iain@mccoy.id.au>
* README: updated to reflect current output of demo
}
- public static readonly DependencyProperty RepetitionsProperty = DependencyProperty.RegisterAttached("Repetitions", typeof(int), typeof(ConsoleApp));
+ public static readonly DependencyProperty RepetitionsProperty = DependencyProperty.RegisterAttached("Repetitions", typeof(int), typeof(ConsoleApp), new PropertyMetadata(1));
public static void SetRepetitions(DependencyObject obj, int number)
{
obj.SetValue(RepetitionsProperty, number);
}
- public static int GetRepetitions(DependencyObject d)
+ public static int GetRepetitions(DependencyObject obj)
{
- object v = d.GetValue(RepetitionsProperty);
- return (v == null ? 1 : (int)v);
+ return (int)obj.GetValue(RepetitionsProperty);
}
}
}