简体   繁体   中英

how to bind to the results of a query in WPF

I have a query that hits a service and returns the results back to me as an indexed collection

static void QueryActivities()
{
    QueryClient qc = new QueryClient("BasicHttpBinding_IQuery");
    QueryFilter filter = new QueryFilter();
    filter.CallForService = false;
    var result = qc.GetFilteredActivityIndex(filter);
    result.Clone(); //inserted this just to test return in debug mode
}

WHen this is executed I get a return of 5 records ( actually five rows of data with multiple values per each row. id, type, date, address etc).

I would like to bind this return to a gridview within a WPF application. Is there a way to refernce and bind to result variable or do I need to create a new collection and then add the return of result to the new collection?

thank you

There might be a way with WPF Toolkit's DataGrid. However, I would create a custom object and make an ObservableCollection of that object and bind to it. The ObservableCollection is a collection meant for this type of use and you can bind the elements inside your custom object to the different elements in your gridview.

Update:

Based on your comment it feels as if you need a good tutorial for binding with MVVM. The best tutorial I have seen on this is Jason Dolinger's tutorial. It helps you bind associated properties from a collection of a custom class.

具有相关属性的新类(ViewModel)级别Collection会更好。

After some testing I found that I could bind directly to the query. The variabl;e results acts as it's own List Collection. That being said I have been able to display the data using:

    private void QueryActivities()
    {
        QueryClient qc = new QueryClient("BasicHttpBinding_IQuery");
        QueryFilter filter = new QueryFilter();
        filter.CallForService = false;
        var result = qc.GetFilteredActivityIndex(filter);

        this.actGridView.ItemsSource = result; //binds to the gridview
    }

Thanks for all the comments on using collections.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM