In MVVM (wich makes a lot of things a lot easier - you should try it) you would have two properties in your ViewModel Text that is bound to your TextBox and you would have a ICommandan ICommand property Apply (or similar) that is bound to the button:
<Button Command="Apply">Apply</Button> The ICommand interface has a Method CanExecute that is where you return true if (!string.IsNullOrWhiteSpace(this.Text). The rest is done by WPF for you (enabling/disabling, executing the actual command on click).
The linked article explains it in detail.