WPF简单查询

WPF简单查询


Model层

public class Dish
{
    public string Name { get; set; }
    public string Category { get; set; }
    public string Comment { get; set; }
    public double Score { get; set; }
}

Service层

public interface IDishService
{
    List<Dish> SelectDishByName(string Name);
}
public class DishService : IDishService
{
    SqlConnection conn = new SqlConnection(@"Data Source=.;Initial Catalog=CrazyElephant;User ID=sa;Password=123456");
    
    public List<Dish> SelectDishByName(string Name)
    {
        conn.Open();
        string sql = "select * from Dish where Name = @Name";
        SqlCommand cmd = new SqlCommand(sql, conn);
        cmd.Parameters.AddWithValue("@Name",Name);
        List<Dish> list = new List<Dish>();
        if (!string.IsNullOrEmpty(Name))
        {
            using (SqlDataReader item = cmd.ExecuteReader())
            {
                while (item.Read())
                {
                    Dish entity = new Dish();
                    entity.Name = item["Name"].ToString();
                    entity.Comment = item["Comment"].ToString();
                    entity.Category = item["Category"].ToString();
                    entity.Score = double.Parse(item["Score"].ToString());
                    list.Add(entity);
                }
            }
        }
        return list;
    }
}

ViewModel层

// 继承prism.DryIoc中的BindableBase
public class MainWindowViewModel : BindableBase
{
    public MainWindowViewModel()
    {
        this.SelectDishByName();
        // 重载
        this.SelectDishByNameCommand = new DelegateCommand(new Action(this.SelectDishByName));
    }
    
    public string TextName { get; set; }
    public DelegateCommand SelectDishByNameCommand {  get; set; }

    private List<Dish> dishMenu;
    public List<Dish> DishMenu
    {
        get { return dishMenu; }
        set { dishMenu = value; RaisePropertyChanged(); }
    }

    private void SelectDishByName()
    {
        DishService ds = new DishService();
        var dishes = ds.SelectDishByName(this.TextName);
        // 实例化
        this.DishMenu = new List<Dish>();
        // 遍历数组
        foreach (var dish in dishes)
        {
            this.DishMenu.Add(dish);
        }
    }
}

VIew层

<StackPanel>
	<TextBox x:Name="Names" Height="30" Width="80" Margin="5" Text="{Binding TextName}"/>
	<Button Height="30" Width="100" Command="{Binding SelectDishByNameCommand}"/>
	<DataGrid AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" 
	           GridLinesVisibility="None" Margin="0,4" FontSize="16" ItemsSource="{Binding DishMenu}">
	   <DataGrid.Columns>
	       <DataGridTextColumn Header="菜品" Binding="{Binding Name}" Width="120"/>
	       <DataGridTextColumn Header="种类" Binding="{Binding Category}" Width="120"/>
	       <DataGridTextColumn Header="点评" Binding="{Binding Comment}" Width="120"/>
	       <DataGridTextColumn Header="推荐分数" Binding="{Binding Score}" Width="120"/>
	   </DataGrid.Columns>
	</DataGrid>
</StackPanel>

最后:MainWindow

this.DataContext = new MainWindowViewModel();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 WPF 中的 TextBox 控件结合 LINQ 查询来实现模糊查询并显示结果。以下是一个简单的示例代码: ```csharp using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Controls; namespace WpfApp { public partial class MainWindow : Window { private List<string> data = new List<string>() { "apple", "banana", "cherry", "grape", "orange" }; public MainWindow() { InitializeComponent(); } private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { string searchText = textBox.Text.ToLower(); var results = data.Where(item => item.ToLower().Contains(searchText)); listBox.ItemsSource = results; } } } ``` 在 XAML 中,你需要将 TextBox 和 ListBox 控件添加到窗口中,并将 TextBox 的 TextChanged 事件绑定到代码中的 TextBox_TextChanged 方法。还需要设置 ListBox 的 ItemsSource 属性绑定到结果集。这样当在 TextBox 中输入文字时,ListBox 中会显示符合条件的结果。 ```xaml <Window x:Class="WpfApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WPF Textbox Fuzzy Query" Height="450" Width="800"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <TextBox x:Name="textBox" Grid.Row="0" Margin="10" TextChanged="TextBox_TextChanged"/> <ListBox x:Name="listBox" Grid.Row="1" Margin="10"/> </Grid> </Window> ``` 这只是一个简单的示例,你可以根据你的需求进行扩展和定制。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值