private static void UpdateBindings()
{
if (!_UpdatingBindings)
{
try
{
_UpdatingBindings = true;
var bindingsToRemove = new List<PropertyBinder>();
if (_Bindings.Count > 0)
{
var keys = _Bindings.Keys.ToArray();
for (var i = 0; i < keys.Length; i++)
{
var binding = _Bindings[keys[i]];
var bindingExpression = SetBinding(keys[i].Object, keys[i].Property, binding);
if(bindingExpression != null)
bindingsToRemove.Add(keys[i]);
}
if (bindingsToRemove.Count > 0)
{
foreach(var bindingKey in bindingsToRemove)
{
_Bindings.Remove(bindingKey);
}
}
bindingsToRemove.Clear();
}
}
finally
{
_UpdatingBindings = false;
}
}
}