我在视图模型中集成了两个接口作为Observable Collections。它们如下, 产品结果:
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
}
小组结果:
public interface IGroupResult
{
IList<IPocketResult> PocketResults { get; }
ResultEnum Result { get; } // ProductResult
string Identifier { get; } // Identifier
DateTime TimeStamp { get; } // Timestamp
IPresentationData Presentation { get; } //Presentation data
}
我的视图模型如下
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;
}
现在我需要从IGroupResult获取Identifier并将其与IProdResult结合使用,以便我可以在datagrid列中将它们显示为Identifier。每个组都有一个具有相同组标识符的产品列表,并且需要为数据网格中的每个产品行显示它们。
我的数据网格如下
<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>
我在Link1中查看了以下答案,并使用了Composite Collection或CollectionViewSource,但找不到合适的解决方案。任何帮助都会非常有用。