Вы можете легко сделать это, используя Commanding . Если вы связываете команду на вашей ViewModel с вашей кнопкой, и метод CanExecute ищет действительную информацию из ваших других входов, то она останется отключенной, пока не будет выполнено это условие.
В MVVM Light это будет выглядеть примерно так
public RelayCommand LogonCommand { get; private set; }
LogonCommand = new RelayCommand(
Logon,
CanLogon
);
private Boolean CanLogon(){
return !String.IsNullOrWhiteSpance(SomeProperty);
}
В вашем XAML просто обязательно свяжите команду кнопки с командой ViewModel:
<Button Command="{Binding LogonCommand}" />
Если ваше текстовое поле привязано к SomeProperty
, это будет работать без какой-либо дополнительной работы и без кода, необходимого.
Кроме того, если вы хотите использовать этот триггер при изменении свойства вместо LostFocus, вам нужно определить это явно.
<TextBox>
<TextBox.Text>
<Binding Source="{StaticResource myDataSource}" Path="SomeProperty"
UpdateSourceTrigger="PropertyChanged"/>
</TextBox.Text>
</TextBox>