Hi,
i have following hierarchical data:
WorkListItem: ... int DocumentCount List of Document Document: string Comment string DocumentState
The Property AutoGenerateField is set "False" so i defined my own FieldLayout. It works, but now i want to bind a Converter which is defined in a style to the children data. What values for Path i have to set , to pass my children properties (Document.State and Document.Comment) to the converter ?
<Style x:Key="DocumentIconStatusStyle" TargetType="{x:Type igDP:CellValuePresenter}"> <Setter Property="Control.Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}"> <Rectangle> <Rectangle.Fill> <MultiBinding Converter="{StaticResource DocumentStatusIconConverter}"> <Binding Path="?????"/> <Binding Path="?????"/> </MultiBinding> </Rectangle.Fill> </Rectangle> </ControlTemplate> </Setter.Value> </Setter> </Style>
Best regards
Hello,
Thank you for your post. I have been looking into it and the code you have provided and I suggest you set the Binding’s Path Property to ChildRecords[0].ChildRecords in order to get the ChildCollection in the Converter. Please let me know if this helps you or you need further assistance on this matter.
Looking forward for your reply.
i´m afraid but it didn't work :(.
My FieldLayout is defined as following:
parent field layout: <igDP:Field Width="auto" Name="Documents" Label="Dokumente" isExpandable="True"> <igDP:Field.Settings> <igDP:FieldSettings AllowEdit="False"/> </igDP:Field.Settings> </igDP:Field>
child field layout:
<igDP:FieldLayout ParentFieldName="Documents" Key="DocumentItem" ParentFieldLayoutKey="vw_WorkListInformation">
<igDP:Field Width="auto" Name="Name" Label="Name"> <igDP:Field.Settings> <igDP:FieldSettings AllowEdit="False"> </igDP:Field.Settings> </igDP:Field> <igDP:Field Width="auto" Name="Status" Label="Status"> <igDP:Field.Settings> <igDP:FieldSettings AllowEdit="False" CellValuePresenterStyle="{StaticResource SingleDocumentStatusValueStyle}"/> </igDP:Field.Settings> </igDP:Field></igDP:FieldLayout>
So in my case this should be correct:
...
<MultiBinding Converter="{StaticResource documentStatusIconConverter}"> <Binding Path="Documents[0].Documents.Name"/> <Binding Path="Documents[0].Documents.Status"/> </MultiBinding>
....
Any ideas ?
Since the DataContext in the Converter's Binding is DataRecord, you shoud set the Binding's Path to ChildRecords[0].ChildRecords. "ChildRecords" is a Property of DataRecord and also, setting the Path like this, you will get the entire child collection of the Record.
Hope this helps you.
with
<MultiBinding Converter="{StaticResource documentStatusIconConverter}"> <Binding Path="ChildRecords[0].ChildRecords"/> <Binding Path="ChildRecords[0].ChildRecords"/> </MultiBinding>
it also doesn't work. I get UnsetValues in die converter parameter. To find the problem i check the RecordExpanding eventhandler and find out that the RecordType is ExpandableFieldRecord and DataRecord is null. The converter is called by clicking on the ExpansionIndicator.
I have created a sample project for you following your scenario and everything seems to work ok on my side. If the sample doesn’t satisfies all your needs feel free to modify it, so it reproduces your behavior and send it back to me for further investigation.
thanks for the Project. You have set the converter in the parent FieldLayout. But for my problem , the converter has to be called at the moment when the child collection is expanding. Please check my sample.
Hello Hase,
I have modified the sample further so now it works as you want. Basically I changed the Converter’s Binding’s Path to ParentDataRecord.ChildRecords[0].ChildRecords. Please let me know if this helps you or you need further assistance on this matter.
Thank you for your feedback. I am glad that you resolved your issue and I believe that other community members may benefit from this as well.
Thanks again.
this works perfectly, thank you very much.
I have modified the sample I sent you before, so now it has the functionality you want.
Hope it helps you.
Thanks it works, the converter is called for every child value (for every document) what is correct. But for every converter call I get the whole child collection in the converter value. Is there a possibility to get the current child value the converter is called for ?