Какую команду мне использовать для поиска? - PullRequest
0 голосов
/ 20 октября 2011

Я работаю над приложением WPF с использованием .NET 4. Я также пытаюсь сосредоточиться на командах WPF и не всегда полагаюсь на события, как я это делал в течение восемнадцати лет. Я пытаюсь выяснить, какую команду использовать. Я наткнулся на команду поиска, которая, кажется, является частью NavigationCommands, и мне не имеет смысла ее использовать. Я также нашел команду Find, но она связана с Control-F, которая заставляет меня думать, что она находит поиск в документе, таком как документ Word, так что, опять же, мне это не подходит.

Вот что я хочу сделать. У меня будет несколько текстовых полей в окнах, например, имя, фамилия, SSN и DOB. Я хочу, чтобы пользователь мог ввести любой или все из них, а затем нажать на кнопку. Затем выполняется поиск в нашей базе данных всех записей, соответствующих параметрам, заданным пользователем. Затем возвращенные результаты будут помещены в список в том же окне.

Какую команду WPF я использую для этого?

Ответы [ 2 ]

1 голос
/ 20 октября 2011

Никакая команда WPF не сделает это за вас волшебным образом.

Вам придется написать код для этого.

Теперь есть две опции ...

  1. Если вы используете шаблон MVVM, вам придется использовать DelegateCommands .
  2. В противном случае подойдет 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());
    }

Надеюсь, это поможет ...

1 голос
/ 20 октября 2011

В этом случае должна использоваться пользовательская команда.Вы хотите использовать привязки команд и класс RoutedCommand.Посмотрите здесь в разделе примеров .Это должно дать основную информацию о том, как сделать простую пользовательскую команду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...