Элемент управления не обновляет связанное свойство немедленно с помощью INotifyPropertyChanged

У меня есть элементы управления, которые не обновляют соответствующие свойства связанных объектов до тех пор, пока фокус не будет потерян. Есть аналогичные вопросы с принятыми ответами, ссылающимися на объявляется DataSourceUpdateMode.OnPropertyChange , что я и делаю, но поведение сохраняется. Вот пример реализации. Я постараюсь быть внимательным, но кратким.Доступ к классу MyConfig осуществляется через свойство в классе Singleton, которое я называю Configuration .

[Serializable]
public class MyConfig : INotifyPropertyChanged
{
    public enum MyEnum
    {
        Foo,
        Bar
    }

    public MyConfig()
    {
        MyProperty = MyEnum.Foo;
    }

    private MyEnum _MyProperty;
    public MyEnum MyProperty
    {
        get { return _MyProperty; }
        set { if (value != _MyProperty) { _MyProperty = value; OnPropertyChanged("MyProperty"); } }
    }

    [field: NonSerialized]
    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(string propertyName)
    {
        if (string.IsNullOrEmpty(propertyName))
            throw new ArgumentNullException(propertyName);
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}

public partial class ConfigForm : Form
{
    public ConfigForm()
    {
        InitializeComponent();
        MyComboBox.Items.AddRange(Enum.GetNames(typeof(MyConfig.MyEnum)));
    }

    private void ConfigForm_Load(object sender, EventArgs e)
    {
        MyComboBox.DataSource = Enum.GetValues(typeof(MyConfig.MyEnum));
        MyComboBox.DataBindings.Add("SelectedItem", Configuration.Instance.MyConfig, "MyProperty", false, DataSourceUpdateMode.OnPropertyChanged);
    }
}

Я не уверен, учитывая следующую краткую реализацию, что я мог упустить, чтобы гарантировать немедленные изменения свойств. Я могу изменить, в этом случае, с Foo на Bar в ComboBox, но пока я не уберу фокус с ComboBox, ничего не изменится. У кого-нибудь есть идеи?

18
задан Josh Clayton 5 December 2011 в 21:19
поделиться