void StopMonitoringChildElement(DependencyObject childElement) { // Remove the MatrixGridChildMonitor from the map // and clear its bindings, which effectively kills // the monitor and releases it from memory. if (_childToMonitorMap.ContainsKey(childElement)) { MatrixGridChildMonitor monitor = _childToMonitorMap[childElement]; BindingOperations.ClearAllBindings(monitor); _childToMonitorMap.Remove(childElement); } }
void StartMonitoringChildElement(DependencyObject childElement) { // Create a MatrixGridChildMonitor in order to detect // changes made to the Grid.Row and Grid.Column attached // properties on the new child element. MatrixGridChildMonitor monitor = new MatrixGridChildMonitor(); BindingOperations.SetBinding( monitor, MatrixGridChildMonitor.GridRowProperty, this.CreateMonitorBinding(childElement, Grid.RowProperty)); BindingOperations.SetBinding( monitor, MatrixGridChildMonitor.GridColumnProperty, this.CreateMonitorBinding(childElement, Grid.ColumnProperty)); _childToMonitorMap.Add(childElement, monitor); }