C# 按实体框架将多个表中的数据绑定到DataGridTextColumn

C# 按实体框架将多个表中的数据绑定到DataGridTextColumn,c#,wpf,entity-framework,data-binding,datagrid,C#,Wpf,Entity Framework,Data Binding,Datagrid,使用Entity Framework创建数据库后,我创建了4个可观察集合,其中包含我拥有的4个表,并创建了一个CompositeCollection来重新组合它们,如下所示: class ViewModel:INotifyPropertyChanged { private BDDInterneEntities _BDDInterneEntities; public ViewModel() { _BDDInterneEntities = new BDDInterneEntities();

使用Entity Framework创建数据库后,我创建了4个可观察集合,其中包含我拥有的4个表,并创建了一个CompositeCollection来重新组合它们,如下所示:

class ViewModel:INotifyPropertyChanged
{
private BDDInterneEntities _BDDInterneEntities;

public ViewModel()
{
    _BDDInterneEntities = new BDDInterneEntities();
    ResultatCollection = new ObservableCollection<Resultat>(_BDDInterneEntities.Resultat);
    D98EquipementsCollection = new ObservableCollection<D98Equipements>(_BDDInterneEntities.D98Equipements);
    D98DetailsCollection = new ObservableCollection<D98Details>(_BDDInterneEntities.D98Details);
    D675Collection = new ObservableCollection<D675>(_BDDInterneEntities.D675);
    cmpc = new CompositeCollection();

    CollectionContainer cc1 = new CollectionContainer();
    CollectionContainer cc2 = new CollectionContainer();
    CollectionContainer cc3 = new CollectionContainer();
    CollectionContainer cc4 = new CollectionContainer();
    cc1.Collection = ResultatCollection;
    cc2.Collection = D98EquipementsCollection;
    cc3.Collection = D98DetailsCollection;
    cc4.Collection = D675Collection;
    cmpc.Add(cc1);
    cmpc.Add(cc2);
    cmpc.Add(cc3);
    cmpc.Add(cc4);


}
public ObservableCollection<Resultat> ResultatCollection { get; set; }
public ObservableCollection<D98Equipements> D98EquipementsCollection { get; set; }
public ObservableCollection<D98Details> D98DetailsCollection { get; set; }
public ObservableCollection<D675> D675Collection { get; set; }
public CompositeCollection cmpc {get; set; }

public event PropertyChangedEventHandler PropertyChanged;

private void OnPropertyChanged(string property)
{
    if(PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(property));
        }

}
public class TestCollectionList : ObservableCollection<TestCollectionList.TestCollection>
    {
        public TestCollectionList() : base()
        {
            Add( new TestCollection());
        }
        public class TestCollection
        {
            private string pmid;
            private string libellepmrq;
            private string ligne;
            private string otm;
            private string totm;
            private string libelleotm;
            private string ga;
            private string discipline;
            private string disciplinesubstituee;

            public TestCollection(string pmid, string libellepmrq, string ligne, string otm, string totm, string libelleotm, string ga, string discipline, string disciplinesubstituee)
            {
                this.pmid = pmid;
                this.libellepmrq = libellepmrq;
                this.ligne = ligne;
                this.otm = otm;
                this.totm = totm;
                this.libelleotm = libelleotm;
                this.ga = ga;
                this.discipline = discipline;
                this.disciplinesubstituee = disciplinesubstituee;
            }

            public string Pmid
            {
                get { return pmid; }
                set { pmid = value; }
            }
            public string Libellepmrq
            {
                get { return libellepmrq; }
                set { pmid = value; }
            }
            public string Ligne
            {
                get { return ligne; }
                set { pmid = value; }
            }
            public string Otm
            {
                get { return otm; }
                set { pmid = value; }
            }
            public string Totm
            {
                get { return totm; }
                set { pmid = value; }
            }
            public string Libelleotm
            {
                get { return libelleotm; }
                set { pmid = value; }
            }
            public string Ga
            {
                get { return ga; }
                set { pmid = value; }
            }
            public string Discipline
            {
                get { return discipline; }
                set { pmid = value; }
            }
            public string Disciplinesubstituee
            {
                get { return disciplinesubstituee; }
                set { pmid = value; }
            }

        }
    }
类视图模型:INotifyPropertyChanged
{
私人私人私人娱乐场所;
公共视图模型()
{
_BDDInternenties=新的BDDInternenties();
ResultatCollection=新的可观察集合(bddinternetenties.Resultat);
D98设备集合=新的可观测集合(_bddinternaties.D98设备);
D98DetailsCollection=新的可观察到的集合(_bddInternetEntities.D98Details);
D675采集=新的可观测采集(bddinternaties.D675);
cmpc=新的CompositeCollection();
CollectionContainer cc1=新的CollectionContainer();
CollectionContainer cc2=新的CollectionContainer();
CollectionContainer cc3=新的CollectionContainer();
CollectionContainer cc4=新的CollectionContainer();
cc1.Collection=ResultatCollection;
cc2.收集=D98设备收集;
cc3.集合=D98DetailsCollection;
cc4.集合=D675集合;
cmpc.Add(cc1);
cmpc.Add(cc2);
cmpc.Add(cc3);
cmpc.Add(cc4);
}
公共ObservableCollection结果集合{get;set;}
公共可见集合D98设备集合{get;set;}
公共ObservableCollection D98Details集合{get;set;}
公共ObservableCollection D675集合{get;set;}
公共CompositeCollection cmpc{get;set;}
公共事件属性更改事件处理程序属性更改;
私有void OnPropertyChanged(字符串属性)
{
if(PropertyChanged!=null)
{
PropertyChanged(此,新PropertyChangedEventArgs(property));
}
}
} 我想要的是将一个ObservaleCollection的一些值绑定到一个DataGridTextColumn,将另一个ObservaleCollection的一些值绑定到另一个DataGridTextColumn,等等

这是Datagrid,绑定的目标:

<DataGrid x:Name="DonneesBrutes" IsReadOnly="True" ItemsSource="{Binding Path=.cmpc}" Margin="10,65,0,0" AutoGenerateColumns="False" EnableRowVirtualization="True" RowDetailsVisibilityMode="VisibleWhenSelected">
        <DataGrid.RowStyle>
            <Style TargetType="{x:Type DataGridRow}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding .Remarque}" Value="{x:Null}">
                        <Setter Property="Visibility" Value="Collapsed"></Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </DataGrid.RowStyle>
            <DataGrid.Columns>
                <DataGridTextColumn x:Name="PMRQ" Width="*" Binding="{Binding Path=.PMID}" Header="PMID"></DataGridTextColumn>
                <DataGridTextColumn x:Name="LibellePMRQ" Width="*" Binding="{Binding Path=.LibelléTOTApres}" Header="Libellé PMRQ"></DataGridTextColumn>
                <DataGridTextColumn x:Name="Ligne" Width="*"     Binding="{Binding Path=.Remarque}" Header="Ligne" IsReadOnly="True"></DataGridTextColumn>
                <DataGridTextColumn x:Name="OTM" Width="*" Binding="{Binding Path=.TOTMPMRQ}" Header="OTM"></DataGridTextColumn>
                <DataGridTextColumn x:Name="TOTM" Width="*" Binding="{Binding Path=.SiModifie}" Header="TOTM"></DataGridTextColumn>
                <DataGridTextColumn x:Name="LibelleTOTM" Width="*" Binding="{Binding Path=.LibelléTOTApres}" Header="Libellé OTM"></DataGridTextColumn>
                <DataGridTextColumn x:Name="GA" Width="*" Binding="{Binding Path=.Groupe_D_alerte}" Header="GA"></DataGridTextColumn>
                <DataGridTextColumn x:Name="Discipline" Width="*" Binding="{Binding Path=.NomTable}" Header="Discipline"></DataGridTextColumn>
                <DataGridTextColumn x:Name="DisciplineSubstituee" Width="120" Binding="{Binding Path=.NomChamp}" Header="Discipline Substituée"></DataGridTextColumn>
            </DataGrid.Columns>
</DataGrid>

第一个DataGridTextColumn是从D98DetailsCollection绑定的,第二个是从ResultatCollection绑定的,等等。条件如下:作为每个ObservableCollection的公共列的属性TOTMPMRQ相等

例如,对于像123456789这样的TOTMPMRQ,我想在TOTMPMMRQ等于123456789的第一个DataGridTextColumn中绑定D98Details集合的PMRQ值,然后在TOTMPMRQ仍然等于123456789的第二个DataGridTextColumn中绑定ResultatCollection的libellePMRQ值,etc用于每个DataGridTextColumn,从几个ObservableCollections获取一行值

我的主要困难是使这个条件。目前,DataGrid只在ObservableCollection之后打印ObservableCollection,而不是组合结果

我希望我的解释不会太混乱,如果需要的话,我总是可以编辑我的帖子,不要犹豫问我更多或者更少

提前感谢你的帮助

EDIT1:

我创建了一个类TestCollectionList,它继承了一个名为TestCollection的ObservableCollection,如下所示:

class ViewModel:INotifyPropertyChanged
{
private BDDInterneEntities _BDDInterneEntities;

public ViewModel()
{
    _BDDInterneEntities = new BDDInterneEntities();
    ResultatCollection = new ObservableCollection<Resultat>(_BDDInterneEntities.Resultat);
    D98EquipementsCollection = new ObservableCollection<D98Equipements>(_BDDInterneEntities.D98Equipements);
    D98DetailsCollection = new ObservableCollection<D98Details>(_BDDInterneEntities.D98Details);
    D675Collection = new ObservableCollection<D675>(_BDDInterneEntities.D675);
    cmpc = new CompositeCollection();

    CollectionContainer cc1 = new CollectionContainer();
    CollectionContainer cc2 = new CollectionContainer();
    CollectionContainer cc3 = new CollectionContainer();
    CollectionContainer cc4 = new CollectionContainer();
    cc1.Collection = ResultatCollection;
    cc2.Collection = D98EquipementsCollection;
    cc3.Collection = D98DetailsCollection;
    cc4.Collection = D675Collection;
    cmpc.Add(cc1);
    cmpc.Add(cc2);
    cmpc.Add(cc3);
    cmpc.Add(cc4);


}
public ObservableCollection<Resultat> ResultatCollection { get; set; }
public ObservableCollection<D98Equipements> D98EquipementsCollection { get; set; }
public ObservableCollection<D98Details> D98DetailsCollection { get; set; }
public ObservableCollection<D675> D675Collection { get; set; }
public CompositeCollection cmpc {get; set; }

public event PropertyChangedEventHandler PropertyChanged;

private void OnPropertyChanged(string property)
{
    if(PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(property));
        }

}
public class TestCollectionList : ObservableCollection<TestCollectionList.TestCollection>
    {
        public TestCollectionList() : base()
        {
            Add( new TestCollection());
        }
        public class TestCollection
        {
            private string pmid;
            private string libellepmrq;
            private string ligne;
            private string otm;
            private string totm;
            private string libelleotm;
            private string ga;
            private string discipline;
            private string disciplinesubstituee;

            public TestCollection(string pmid, string libellepmrq, string ligne, string otm, string totm, string libelleotm, string ga, string discipline, string disciplinesubstituee)
            {
                this.pmid = pmid;
                this.libellepmrq = libellepmrq;
                this.ligne = ligne;
                this.otm = otm;
                this.totm = totm;
                this.libelleotm = libelleotm;
                this.ga = ga;
                this.discipline = discipline;
                this.disciplinesubstituee = disciplinesubstituee;
            }

            public string Pmid
            {
                get { return pmid; }
                set { pmid = value; }
            }
            public string Libellepmrq
            {
                get { return libellepmrq; }
                set { pmid = value; }
            }
            public string Ligne
            {
                get { return ligne; }
                set { pmid = value; }
            }
            public string Otm
            {
                get { return otm; }
                set { pmid = value; }
            }
            public string Totm
            {
                get { return totm; }
                set { pmid = value; }
            }
            public string Libelleotm
            {
                get { return libelleotm; }
                set { pmid = value; }
            }
            public string Ga
            {
                get { return ga; }
                set { pmid = value; }
            }
            public string Discipline
            {
                get { return discipline; }
                set { pmid = value; }
            }
            public string Disciplinesubstituee
            {
                get { return disciplinesubstituee; }
                set { pmid = value; }
            }

        }
    }
公共类TestCollectionList:ObservableCollection
{
公共TestCollectionList():base()
{
添加(新TestCollection());
}
公共类TestCollection
{
私有字符串pmid;
私有字符串libellepmrq;
私有字符串对齐;
私有字符串otm;
私有字符串totm;
私有字符串诽谤;
私有字符串ga;
私弦学科;
私有字符串纪律替代者;
公共测试集合(字符串pmid、字符串libellepmrq、字符串ligne、字符串otm、字符串totm、字符串libelleotm、字符串ga、字符串规程、字符串规程替换)
{
this.pmid=pmid;
this.libellepmrq=libellepmrq;
this.ligne=ligne;
this.otm=otm;
this.totm=totm;
this.libelleotm=libelleotm;
this.ga=ga;
这个。纪律=纪律;
this.discriptesubstituee=纪律替代者;
}
公共字符串Pmid
{
获取{return pmid;}
设置{pmid=value;}
}
公共字符串Libellepmrq
{
获取{return libellepmrq;}
设置{pmid=value;}
}
公共字符串对齐
{
获取{return ligne;}
设置{pmid=value;}
}
公共字符串Otm
{
获取{return otm;}
设置{pmid=value;}
}
公共字符串Totm
{
获取{return totm;}
设置{pmid=value;}
}
公共字符串诽谤
{
获取{return libelleotm;}
设置{pmid=value;}
}
公共字符串Ga
{
获取{return ga;}
设置{pmid=value;}
}
公共弦学科
{
获取{返回规程;}
设置{pmid=value;}
}
公共字符串规则替代者
{
获取{return practicessubstituee;}
设置{pmid=value;}
}
}
}
我已经创建了我想要的所有属性