我应该使用哪个命令来执行搜索?

时间:2011-10-19 21:33:20

标签: wpf command

我正在使用.NET 4开发一个WPF应用程序。我也试图将我的头脑包裹在WPF命令中,而不是总是依赖于事件,就像我已经做了十年一样。我想弄清楚要使用哪个命令。我遇到了一个Search命令,它似乎是NavigationCommands的一部分,这对我来说没有意义。我也找到了Find命令,但这与Control-F有关,这让我认为它是用于在文档中查找搜索,比如Word文档,所以再一次,这对我来说不合适。

这就是我想要完成的事情。我会在Windows上有一些文本框,用于名字,姓氏,SSN和DOB。我希望用户可以输入任何或所有这些,然后单击按钮。然后,它会针对与用户提供的参数匹配的所有记录对我们的数据库执行搜索。然后它会将返回的结果放在同一窗口的列表框中。

我使用什么WPF命令?

2 个答案:

答案 0 :(得分:1)

在这种情况下应该使用自定义命令。您想使用命令绑定和RoutedCommand类。看here in the example section。这应该提供有关如何创建简单自定义命令的基本信息。

答案 1 :(得分:1)

没有WPF命令会为你神奇地做到这一点。

您必须为此编写代码。

现在有两种选择......

  1. 如果您使用的是MVVM模式,则必须使用DelegateCommands
  2. 否则RoutedComamnds会这样做。
  3. 对于RoutedCommands,您可以使用自定义路由命令或使用现有的NavigationCommand.Search或查找命令,您必须记住的是应用CommandBindings。使用CommandBindings,您必须提供一个OnExecuted处理程序,您的逻辑将放在该处理程序中。

    现在要提取用户在TextBoxes中输入的内容,您可以使用CommandParameter将文本框绑定到命令...

    e.g。

    当用户在TetxBox中键入他/她的名字并点击“Hit Me!”时,下面是一个显示“Hello World”的简单代码。按钮,具有为其配置的命令。如果用户清除文本框(即无效输入),该命令还禁用按钮。

    <强> 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>
    

    代码背后......

        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());
        }
    

    希望这会有所帮助......