private void AdjustLines(object sender, SizeChangedEventArgs _) { var items = ( from object item in Spectrum.Items let bin = item as FrequencyBin where bin != null let container = UIHelpers.FindVisualChildren <AudioLine>(Spectrum.ItemContainerGenerator.ContainerFromItem(bin)).FirstOrDefault() where container != null select container ).ToArray(); var margin = items.FirstOrDefault()?.Margin; var offset = margin?.Top + margin?.Bottom ?? 0; double width = 5; double widthOffset = ((margin?.Right ?? 0) + (margin?.Left ?? 0)); if (items.Length > 0) { width = Math.Max(5, ActualWidth / items.Length - widthOffset); } foreach (var spectrumItem in items) { spectrumItem.Height = ActualHeight - offset; spectrumItem.Width = width; } ; }