Я новичок в шаблоне MVVM.Bound Button.IsEnabled() Свойство не работает должным образом
Мне было интересно, почему каждый раз мое событие TextChanged()
уволено, связанное свойство IsEnabled()
не меняет свое состояние. Событие TextChanged()
вызывает IsValid()
для проверки достоверности данных.
Я имею эту простую ViewModel
класс
public class myViewModel : ViewModel
{
public bool IsOk { get; set; }
public RelayCommand OnValidateExecute { get; set; }
public myViewModel()
{
OnValidateExecute = new RelayCommand(p => IsValid(), p => true);
}
public bool IsValid()
{
// other codes
IsOk = MethodName();
NotifyPropertyChanged("IsOk");
}
}
я поставил точку останова на IsValid()
и код работает нормально. Мне было интересно, почему свойство IsEnabled
не работает должным образом.
Это мой XAML
код
<TextBox ...other propeties here....>
<i:Interaction.Triggers>
<i:EventTrigger EventName="TextChanged">
<i:InvokeCommandAction Command="{Binding OnValidateExecute}">
</i:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
<Button x:Name="btnSave" IsEnabled="{Binding IsOk, Mode=TwoWay}"
...other propeties here....>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="{Binding OnSaveExecute}">
</i:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
То, что я хочу, что когда IsOk
свойство ложно, то кнопка должна быть Disabled
, в противном случае, Enabled
.
Есть ли какие-то ошибки в привязке данных? Если этот вопрос задан раньше, любезно помогите мне перенаправить его.
UPDATE 1
Еще одна проблема, у меня встреча с этим кодом является то, что функция IsValid()
срабатывает первый перед установкой значения на текстовом поле. Вот пример. Предполагая, что начальное значение текстового поля 0
, когда я изменил его, скажем, на 9, значение, которое будет проверяться, - это предыдущее значение 0
вместо 9
. Любая идея, почему это происходит? Есть ли проблема с привязкой?
свойства 'IsEnabled' не работают, как ожидались - То, что вы действительно ожидаете от этой собственности? Если кнопка отключена на пустой текст? – Jawahar
@XAMLLover да. Я попытался отладить код, и значение свойства IsOK изменяется, но кнопка не изменяется. –