WPF MVVM Combox не сохраняет старое значение при сбое проверки - PullRequest
2 голосов
/ 23 января 2011

У меня есть элемент управления combox, который привязан к свойству, используя MVVM. В методе set при изменении значения выполняется проверка. Проблема заключается в том, что значение изменяется на новое, даже если проверка завершается неудачно и не сохраняется старое значение.

Ниже XAML:

<ComboBox Grid.Column="1" Grid.Row="1" Width="200" ItemsSource="{Binding Path=Applications, Mode=OneTime}" SelectedItem="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Path=DataContext.Application, Mode=TwoWay}" Margin="3"></ComboBox>

Ниже приведен код модели:

private string[] types = new string[] { "A", "B" };

private string application;

public ObservableCollection<string> Applications { get; private set; }

public Const() {
        this.Applications = new ObservableCollection<string>(this.types.ToList());
    }

public string Application {
        get {
            this.application = this.applicationSpecificRequirements.ContainsKey(Resources.ApplicationKey) ? this.applicationSpecificRequirements[Resources.ApplicationKey] : this.Applications[0];
            return this.application;
        }

        set {
            if (this.exchangeViewModel.CheckIfApplicationNameExistsOrIsEmptyAndAssign(this.InstanceName, value)) {
                System.Windows.Application.Current.Dispatcher.BeginInvoke(
                    new Action(() => {
                        this.applicationSpecificRequirements[Resources.ApplicationKey] = this.application;
                        ((IHaveOnPropertyChangedMethod) this).OnPropertyChanged("Application");
                    }), DispatcherPriority.ContextIdle, null);

                return;
            }

            this.applicationSpecificRequirements[Resources.ApplicationKey] = value;
        }
    }

1 Ответ

0 голосов
/ 25 января 2011

похоже, что вам не хватает OnPropertyChanged (...) в последней строке в установщике свойств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...