5 // Iain McCoy (iain@mccoy.id.au)
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 namespace System.Windows {
30 public class PropertyMetadata {
31 private object defaultValue;
32 private GetValueOverride getValueOverride;
33 private SetValueOverride setValueOverride;
34 private bool isSealed;
35 private PropertyInvalidatedCallback propertyInvalidatedCallback;
36 private ReadLocalValueOverride readLocalValueOverride;
37 private bool readOnly;
38 private WriteLocalValueOverride writeLocalValueOverride;
40 public object DefaultValue {
41 get { return defaultValue; }
42 set { defaultValue = value; }
44 public GetValueOverride GetValueOverride {
45 get { return getValueOverride; }
46 set { getValueOverride = value;}
48 protected bool IsSealed {
49 get { return isSealed; }
51 public PropertyInvalidatedCallback PropertyInvalidatedCallback {
52 get { return propertyInvalidatedCallback; }
53 set { propertyInvalidatedCallback = value; }
55 public ReadLocalValueOverride ReadLocalValueOverride {
56 get { return readLocalValueOverride; }
57 set { readLocalValueOverride = value; }
59 public bool ReadOnly {
60 get { return readOnly; }
62 public WriteLocalValueOverride WriteLocalValueOverride {
63 get { return writeLocalValueOverride; }
64 set { writeLocalValueOverride = value; }
67 public PropertyMetadata()
70 public PropertyMetadata(GetValueOverride getValueOverride)
72 this.getValueOverride = getValueOverride;
74 public PropertyMetadata(GetValueOverride getValueOverride, SetValueOverride setValueOverride)
76 this.getValueOverride = getValueOverride;
77 this.setValueOverride = setValueOverride;
79 public PropertyMetadata(object defaultValue)
81 this.defaultValue = defaultValue;
83 public PropertyMetadata(object defaultValue, PropertyInvalidatedCallback propertyInvalidatedCallback)
85 this.defaultValue = defaultValue;
86 this.propertyInvalidatedCallback = propertyInvalidatedCallback;
89 public PropertyMetadata(object defaultValue, PropertyInvalidatedCallback propertyInvalidatedCallback, GetValueOverride getValueOverride)
91 this.defaultValue = defaultValue;
92 this.propertyInvalidatedCallback = propertyInvalidatedCallback;
93 this.getValueOverride = getValueOverride;
95 public PropertyMetadata(object defaultValue, PropertyInvalidatedCallback propertyInvalidatedCallback, GetValueOverride getValueOverride, SetValueOverride setValueOverride)
97 this.defaultValue = defaultValue;
98 this.propertyInvalidatedCallback = propertyInvalidatedCallback;
99 this.getValueOverride = getValueOverride;
100 this.setValueOverride = setValueOverride;
102 public PropertyMetadata(PropertyInvalidatedCallback propertyInvalidatedCallback)
104 this.propertyInvalidatedCallback = propertyInvalidatedCallback;
106 public PropertyMetadata(PropertyInvalidatedCallback propertyInvalidatedCallback, GetValueOverride getValueOverride)
108 this.propertyInvalidatedCallback = propertyInvalidatedCallback;
109 this.getValueOverride = getValueOverride;
111 public PropertyMetadata(PropertyInvalidatedCallback propertyInvalidatedCallback, GetValueOverride getValueOverride, SetValueOverride setValueOverride)
113 this.propertyInvalidatedCallback = propertyInvalidatedCallback;
114 this.getValueOverride = getValueOverride;
115 this.setValueOverride = setValueOverride;
119 protected void ClearCachedDefaultValue (DependencyObject owner)
121 throw new NotImplementedException("ClearCachedDefaultValue(DependencyObject owner)");
125 protected virtual object CreateDefaultValue (DependencyObject owner, DependencyProperty property)
127 throw new NotImplementedException("CreateDefaultValue(DependencyObject owner, DependencyProperty property)");
131 protected virtual void Merge (PropertyMetadata baseMetadata, DependencyProperty dp)
133 throw new NotImplementedException("Merge(PropertyMetadata baseMetadata, DependencyProperty dp)");
137 protected virtual void OnApply (DependencyProperty dp, Type targetType)
139 throw new NotImplementedException("OnApply(DependencyProperty dp, Type targetType)");