diff options
Diffstat (limited to 'Xamarin.Forms.Core')
-rw-r--r-- | Xamarin.Forms.Core/ResourceDictionary.cs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/Xamarin.Forms.Core/ResourceDictionary.cs b/Xamarin.Forms.Core/ResourceDictionary.cs index 7460a909..bff6127b 100644 --- a/Xamarin.Forms.Core/ResourceDictionary.cs +++ b/Xamarin.Forms.Core/ResourceDictionary.cs @@ -23,6 +23,7 @@ namespace Xamarin.Forms return; _mergedInstance = _mergedWith.GetTypeInfo().BaseType.GetTypeInfo().DeclaredMethods.First(mi => mi.Name == "GetInstance").Invoke(null, new object[] {_mergedWith}) as ResourceDictionary; + OnValuesChanged (_mergedInstance.ToArray()); } } @@ -64,7 +65,7 @@ namespace Xamarin.Forms public int Count { - get { return _innerDictionary.Count; } + get { return _innerDictionary.Count + (_mergedInstance != null ? _mergedInstance.Count: 0); } } bool ICollection<KeyValuePair<string, object>>.IsReadOnly @@ -116,12 +117,15 @@ namespace Xamarin.Forms IEnumerator IEnumerable.GetEnumerator() { - return ((IEnumerable)_innerDictionary).GetEnumerator(); + return GetEnumerator(); } public IEnumerator<KeyValuePair<string, object>> GetEnumerator() { - return _innerDictionary.GetEnumerator(); + var rd = (IEnumerable<KeyValuePair<string,object>>)_innerDictionary; + if (_mergedInstance != null) + rd = rd.Concat(_mergedInstance._innerDictionary); + return rd.GetEnumerator(); } public bool TryGetValue(string key, out object value) |