C# 按实体框架将多个表中的数据绑定到DataGridTextColumn
使用Entity Framework创建数据库后,我创建了4个可观察集合,其中包含我拥有的4个表,并创建了一个CompositeCollection来重新组合它们,如下所示: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();
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;}
}
}
}
我已经创建了我想要的所有属性