开发者

how to bind to the results of a query in WPF

开发者 https://www.devze.com 2023-01-03 13:00 出处:网络
I have a query that hits a service and returns the results back to me as an indexed collection static void QueryActivities()

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开发者_Go百科
}

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.


A new class(ViewModel) level Collection with its associated property would be better.


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消