将字符串传递给另一个类

时间:2015-07-08 05:33:39

标签: c# wpf sqlite mvvm binding

在MyViewModel中,我有一个字符串属性(SearchBox)绑定到我视图中的文本框。当我点击搜索按钮A命令时,发送到我的数据层类以从dB获得搜索结果(图像)。

我的问题是如何从searchBox传递字符串以及在datalayer类中使用的方法。

public class MyViewModel : NotifyUIBase
{
    private string _searchBox;
    public string SearchBox    // the Name property
    {
        get { return this._searchBox; }
        set { this._searchBox = value; RaisePropertyChanged(); }
    }  

    public MyViewModel()
    {
        FindImageCommand = new RelayCommand(FindImage);
    }

    public RelayCommand FindImageCommand { get; private set; }
    private void FindImage()
    {
        var dbFunctions = new DatabaseFunctions();
        FindVisualReferences = dbFunctions.FindVisualReferences();
    }
}

在DataLayer类中,我需要使用查询中SearchBox的字符串来搜索dB。

public class DataLayer 
{

    public ObservableCollection<Image> FindVisualReferences()
    {
        var FindVisualReferences = new ObservableCollection<Image>();

        String dbConnectionString = @"Data Source =mydB.sqlite";

        SQLiteConnection cnn = new SQLiteConnection(dbConnectionString);
        cnn.Open();

 ====>  string Query = "Select* from images where title = '" + SearchBox.ToUpper() + "'";

        SQLiteDataAdapter sda = new SQLiteDataAdapter(Query, cnn);
        DataTable dt = new DataTable();
        sda.Fill(dt);

        // rest of dB method
    }
}

如何从MyViewModel中的SearchBox获取字符串到查询中以搜索DataLayer类中的数据库?

1 个答案:

答案 0 :(得分:0)

首先,更改您的方法以接受字符串参数:

public ObservableCollection<Image> FindVisualReferences(string search)

现在,您可以在调用此方法时简单地传入SearchBox字符串,如下所示:

FindVisualReferences = dbFunctions.FindVisualReferences(SearchBox);

然后,您可以重写查询以引用参数,如下所示:

string Query = "Select* from images where title = '" + search.ToUpper() + "'";

现在,@ Floris很好地使用参数而不是字符串连接,我建议查看this,因为它已经得到了解答。