private static void BindSelectedItem <TBinding, TSource, TProperty>(ComboBox comboBox,
                                                                     TBinding item,
                                                                     Expression <Func <TBinding, TProperty> > member,
                                                                     ComboBoxSource.ComboBoxBinding <TSource> binding)
 {
     comboBox.DataBindings.Add(nameof(ComboBox.SelectedItem), item, ReflectionUtils.GetPropertyName(member));
     comboBox.SetDefault(binding.DefaultValue);
     comboBox.SelectionChangeCommitted += (sender, e) => comboBox.DataBindings[nameof(ComboBox.SelectedItem)].WriteValue();
     (comboBox.DataSource as IBindingList).ListChanged += (sender, e) =>
     {
         var value = ReflectionUtils.GetValue(item, member);
         if (value == null)
         {
             comboBox.SetDefault(binding.DefaultValue);
         }
     };
 }