Я думаю, что вы видите, потому что MenuItems не отвлекают фокус от TextBox, и по умолчанию TextBox только возвращает изменения обратно в связанный источник, когда фокус смещается от него. Поэтому, когда вы нажимаете кнопку, фокус смещается на кнопку, записывая значение TextBox обратно в _theInput. Однако при нажатии элемента MenuItem фокус остается в TextBox, поэтому значение не записывается.
Попробуйте изменить объявление TextBox на:
<TextBox Text="{Binding TheInput,UpdateSourceTrigger=PropertyChanged}"/>
Или попробуйте переключиться на DelegateCommand<t>
, который может получить параметр, и передать ему текст TextBox:
<MenuItem Command="{Binding DoSomethingCommand}"
CommandParameter="{Binding Text,ElementName=inputTextBox}" />
...
<TextBox x:Name="inputTextBox" Text="{Binding TheInput}" />