0

I have integrated two interfaces as Observable Collections in the View Model. They are as follows, Product Results:

    public interface IProdResult
    {
       string Name { get; set; }        // product name
       IMeasureResult Result { get; }   // product result
       IPos NominalPos { get; }         // nominal pose               
       IPos Deviation { get; }          // deviation
       string PinType { get; }         // product type                  
       IPresentationData Presentation { get; } //Presentation Data          
    }

Group Results:

    public interface IGroupResult
      {
           IList<IPocketResult> PocketResults { get; }   
           ResultEnum Result { get; }               // ProductResult
           string Identifier { get; }               // Identifier      
           DateTime TimeStamp { get; }              // Timestamp
           IPresentationData Presentation { get; }  //Presentation data      
      }

My View Model is as follows

    public class AnalysisDataGridViewModel : SubPageViewModel
        {
            #region Fields        
            private ObservableCollection<IProdResult> _product
                = new ObservableCollection<IProdResult>();

            private ObservableCollection<IGroupResult> _group
             = new ObservableCollection<IGroupResult>();

    public MainViewModel()
    {
        Coordinates = new Dictionary<Coordinate, NotifingBoolean>();        
        var services = App.Container.Resolve<IProductionServices>();
        services.ProductSelectionOnservable
            .SelectMany(group=> group.GroupResults) 
            .SelectMany(products => products.ProductResults)               
            .Subscribe(product=> ProdView.Add(product));

        services.ProductSelectionOnservable
            .SelectMany(group => group.GroupResults)
            .Subscribe(group=> GroupView.Add(group));

    }

    public ObservableCollection<IProdResult> ProdView=> _product;
    public ObservableCollection<IGroupResult> GroupView=> _group;

            }

Now I need to take the Identifier from IGroupResult and combine it with the IProdResult so that I can display them in a datagrid column as Identifier. Every Group has a list of products with the same group identifier and they need to be displayed for every product row in the data grid.

My datagrid is as follows

            <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
                    <Grid VerticalAlignment="Top" HorizontalAlignment="Left">             
                    <DataGrid Grid.Row="1" 
                              AutoGenerateColumns="False"                                    
                              HeadersVisibility="All"          
                              SelectionMode="Extended"
                              SelectionUnit="FullRow"
                              CanUserReorderColumns="True"
                              ItemsSource="{Binding ProdView}">
                            <DataGrid.Columns>                  
                            <DataGridTextColumn Header="{DynamicResource Name}"
                                                Width="Auto"
                                                Binding="{Binding Name}" />
                            <DataGridTextColumn Header="{DynamicResource NominalPoseX}"
                                                Width="Auto"
                                                Binding="{Binding NominalPos.X}" />
                            <DataGridTextColumn Header="{DynamicResource NominalPoseY}"
                                                Width="Auto"
                                                Binding="{Binding NominalPos.Y}" />
                            <DataGridTextColumn Header="{DynamicResource NominalPoseZ}"
                                                Width="Auto"
                                                Binding="{Binding NominalPos.Z}" />                
                            <DataGridTextColumn Header="{DynamicResource DeviationX}"
                                                Width="Auto"
                                                Binding="{Binding Deviation.X}" />
                            <DataGridTextColumn Header="{DynamicResource DeviationY}"
                                                Width="Auto"
                                                Binding="{Binding Deviation.Y}" />
                            <DataGridTextColumn Header="{DynamicResource DeviationZ}"
                                                Width="Auto"
                                                Binding="{Binding Deviation.Z}" />
                            <DataGridTextColumn Header="{DynamicResource ResultX}"
                                                Width="Auto"
                                                Binding="{Binding Result.X}" />
                            <DataGridTextColumn Header="{DynamicResource ResultY}"
                                                Width="Auto"
                                                Binding="{Binding Result.Y}" />
                            <DataGridTextColumn Header="{DynamicResource ResultZ}"
                                                Width="Auto"
                                                Binding="{Binding Result.Z}" />
                        </DataGrid.Columns>

I looked into the following answers in Link1 and using either Composite Collection or CollectionViewSource but could not find a proper solution. Any help will be greately useful.

Robionic
  • 315
  • 4
  • 14
  • maybe, are you looking for a grouping solution like that https://www.c-sharpcorner.com/uploadfile/dpatra/grouping-in-datagrid-in-wpf/ – Ugur Mar 15 '18 at 13:44
  • Thanks @Ugur I had been looking into it, albeit this is with MVVM and I am a beginner at this point. – Robionic Mar 15 '18 at 13:51
  • I am not able to link a member of one `ObservableCollection` into another using the `PropertyGroupDescription` from `ListCollectionView` – Robionic Mar 15 '18 at 13:57
  • You use already Observablecollection. That means you can handle also MVVM using some basic bindings at the point. – Ugur Mar 15 '18 at 13:58
  • @Ugur Your answer does not really help me in solving the problem. I am improvising a program which I did not develop. – Robionic Mar 19 '18 at 10:55

0 Answers0