У меня есть наблюдаемая коллекция класса, которая реализует как BindableBase
, так и IDataErrorInfo
. На мой взгляд, у меня есть кнопка, привязка которой ICommand
должна выполняться только тогда, когда каждый элемент в наблюдаемой коллекции проверяется. Поскольку один из элементов почти всегда начинает действовать недействительным, кнопка изначально отключена. У меня есть следующий код в моем конструкторе:DelegateCommand в Prism, чей метод canExecuteMethod определяется свойством в ObservableCollection. Как продолжить «Наблюдать» canExecute?
this.StartInspectionCommand = new DelegateCommand(this.StartInspection,() => this.Parameters.All(p => string.IsNullOrEmpty(p["Value"])))
Где определяется моя наблюдаемая коллекция следующим образом:
public ObservableCollection<Parameter> Parameters { get; } = new ObservableCollection<Parameter>();
И реализация IDataErrorInfo
в моем классе Paramters как это:
public string this[string columnName]
{
get
{
if (columnName != "Value" // Only validate value column
|| string.IsNullOrEmpty(this._validationExpression) // No validation means all values including null are valid
|| (this.Value != null && Regex.IsMatch(this.Value, this._validationExpression))) // No null allowed when validating
{
return ""; // No error
}
return this._validationMessage;
}
}
Каков синтаксис для того, чтобы метод canExecuteMethod был переоценен, когда пользователь вводит допустимые значения в различные параметры? (Или, в этом отношении, вызывает в настоящее время действительные для аннулирования.)
Я понимаю, как использовать ObservesCanExecute
и ObservesProperty<T>
для свойств, но я не уверен, как применить это к свойству внутри класса, который является частью от ObservableCollection
.
Спасибо.
Спасибо! Ваш метод работал отлично. (Я использовал выражение лямбда PropertyChangedEventHandler, а не метод). – GrantA