I have defined the columns of my XamDataGrid using FieldSettings and FieldLayout. But the problem is, that the grid takes all the properties from the "inserted" objects and displays them as columns. This means, that I have to create a specific ViewModel-class for the DataGrid, which is a bit annoying.
The standard WPF DataGrid has an attribute called AutoGenerateColumns. Does the XamDataGrid have something like this? I can't find it...
Hello Christian,
Thank you for your post. I have been looking through it and I suggest you use AutoGenerateFields property of the FieldLayoutSettings object of the XamDataGrid. Please let me know if you need further clarifications on this matter.
Looking forward fort your reply.
Hello Stefan,
My XAML-code looks like this:
<igDP:XamDataGrid
x:Name="IgGridProjects"
DataSource="{Binding Projects2}"
ActiveDataItem="{Binding CurrentProjListItem}"
SelectedItemsChanged="IgGridProjects_SelectedItemsChanged"
AssigningFieldLayoutToItem="IgGridProjects_AssigningFieldLayoutToItem"
GroupByAreaLocation="None">
<igDP:XamDataGrid.FieldLayouts>
<igDP:FieldLayout Key="masterRow">
<igDP:Field Name="ShortName" Label="Short Name" />
<igDP:Field Name="Name" Label="Name" />
<igDP:Field Name="Owner" Label="Owner" />
</igDP:FieldLayout>
<igDP:FieldLayout Key="nestedRow">
<igDP:Field Name="VersCreateDate" Label="Created On" />
<igDP:Field Name="VersUpdateDate" Label="Updated On" />
</igDP:XamDataGrid.FieldLayouts>
</igDP:XamDataGrid>
Where should I place the XAML you provided?
You can put this code:
<igDP:XamDataGrid.FieldLayoutSettings> <igDP:FieldLayoutSettings AutoGenerateFields="False"/> </igDP:XamDataGrid.FieldLayoutSettings>
Before the last row of your XAML.
Hello again
The objects I'm displaying in the XamDataGrid have multiple public collections. How can I specify which collection should be used for "nested" items in a hierarchical XamDataGrid?
Hello again,
You can set the AutoGenerateFields property of the nested FieldLayout to False and define the Fields that you want to be displayed.
Isn't that the same as my previous question?
What I want to do here, is to specify the collection from which the nested items should be taken.
For example I have a vmProject ViewModel-class, that I use in my XamDataGrid. This class has two public collections, "Versions" and "Notes". In the XamDataGrid I only want to display objects from "Versions" as child-elements of vmProject. As of now the Grid displays both collections!
I still want the AutoGenerateFields set to false so that I can specify the columns myself.
Thank you Yanko Nikolov. That worked.
Hello,
I have already answered this question in the following forum thread :
http://ko.infragistics.com/community/forums/p/72414/366844.aspx#366844
Stefan,
I have a similar situation and your example helped to a certain extent. However, it fails in a certain scenario. I have modified your solution to reproduce my situation. I have added another class to the Person object and I need to display the "Height" field at the parent row level.
Attached is the modified code. It'll be great if you can help on this. Also, I added a "Number" property to the Cars class. Though the field is displayed correctly, I failed to understand how? Does XamDataGrid compare the rest of the fields to see what collection the FieldLayout belongs to ?
Thanks for your help.
I am glad I helped you resolve this. As for your question I suggest you use the AutoFitMode of the FieldLayoutSettings. You can read about it here:
http://help.infragistics.com/NetAdvantage/WPF/2011.1/CLR4.0/?page=InfragisticsWPF4.DataPresenter.v11.1~Infragistics.Windows.DataPresenter.AutoFitMode.html
Hope this helps you.
Thanks. That worked great!
Another question. Is it possible to set some kind of "auto-width" on one of the fields? For example, the Name-field would be dynamic, so that the grid "fills" the window..