Никакая команда WPF не сделает это за вас волшебным образом.
Вам придется написать код для этого.
Теперь есть две опции ...
- Если вы используете шаблон
MVVM
, вам придется использовать DelegateCommands . - В противном случае подойдет
RoutedComamnds
.
Для RoutedCommands вы можете использовать настраиваемую маршрутизируемую команду ИЛИ использовать существующую NavigationCommand.Search OR Find Commands, все, что вам нужно запомнить, это применить CommandBindings
.Используя CommandBindings
, вы должны предоставить обработчик OnExecuted
, в который будет помещена ваша логика.
Теперь, чтобы извлечь то, что пользователь ввел в текстовые поля, вы можете привязать текстовые поля к команде, используя CommandParameter
...
например,
Ниже приведен простой код, который отображает «Hello World», когда пользователь вводит свое имя в TetxBox и нажимает «Hit Me!»кнопка, для которой настроена команда.Команда также отключает кнопку, если пользователь очищает текстовое поле (т. Е. Неверный ввод).
XAML
<Button Command="NavigationCommands.Search"
CommandParameter="{Binding Text, ElementName=UserNameTextBox}"
Content="Hit Me!">
<Button.CommandBindings>
<CommandBinding Command="NavigationCommands.Search"
Executed="OnSearchCommandExecuted"
CanExecute="CanSearchCommandExecute"/>
</Button.CommandBindings>
</Button>
<TextBox Name="UserNameTextBox"
Text="(Enter User Name)">
</TextBox>
Code Behind...
private void OnSearchCommandExecuted
(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show("Hello World " + e.Parameter.ToString());
}
private void CanSearchCommandExecute
(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = !string.IsNullOrEmpty(e.Parameter.ToString());
}
Надеюсь, это поможет ...