В моем приложении WPF у меня есть TextBox и кнопка. Кнопка имеет привязку команды к команде, которая будет что-то делать с текстом.
<TextBox x:Name="_textBox"></TextBox>
<Button Command="{Binding SomeCommand}"
CommandParameter="{Binding ElementName=_text, Path=Text}"
Content="Trigger SomeCommand" />
Теперь я хочу, чтобы действие нажатия кнопки также очищало TextBox. Какой лучший способ сделать это? Я вижу два варианта:
Я мог бы добавить событие Click и на Button - чтобы это прояснило текст. Для меня это не очень хорошая идея, так как я бы разделил действие на две части, полагаясь на порядок их выполнения, чтобы они были правильными.
Опция, которую я использовал сейчас, состоит в том, чтобы передать весь TextBox вместо свойства TextBox.Text. При этом команда может сначала извлечь текст, использовать его, а затем очистить TextBox. У меня такая же привязка, но без «Пути»:
<TextBox x:Name="_textBox"></TextBox>
<Button Command="{Binding SomeCommand}"
CommandParameter="{Binding ElementName=_text}"
Content="Trigger SomeCommand" />
И основные части моей команды:
public class SomeCommand : ICommand
{
....
public void Execute(object parameter)
var textBox = parameter as TextBox;
if (inputTextBox == null) return;
DoSomething(textBox.Text);
textBox.Clear();
}
}
Моя проблема с этим заключается в том, что команда теперь опирается на компонент пользовательского интерфейса, и что пользовательский интерфейс зависит от команды, которая действительно вносит в нее некоторые изменения. Мне не все удобно с этим. Есть ли способ лучше?