private void UpdateProperties() { var selectedProperties = ImmutableList.ValueOf(SelectedProperties); var newProperties = SelectedHandlers .SelectMany(handler => handler.Properties.Select(pd => pd.PropertyDescriptor.Name)).Distinct() .OrderBy(name => name).ToArray(); if (newProperties.SequenceEqual(listBoxProperties.Items.OfType <string>())) { return; } listBoxProperties.Items.Clear(); listBoxProperties.Items.AddRange(newProperties); for (int i = 0; i < listBoxProperties.Items.Count; i++) { if (selectedProperties.Contains(newProperties[i])) { listBoxProperties.SelectedIndices.Add(i); } else { listBoxProperties.SelectedIndices.Remove(i); } } }