双向绑定需要PATH或XPATH c#
本文关键字:XPATH PATH 绑定 | 更新日期: 2023-09-27 18:20:22
我正在尝试将数据库表绑定到DataGrid,这是我正在尝试绑定的表:
public partial class Resultat
{
public string NomTable { get; set; }
public string Groupe_D_alerte { get; set; }
public string NomChamp { get; set; }
public string TOTMPMRQ { get; set; }
public string SiModifie { get; set; }
public string LibelléTOTAvant { get; set; }
public string LibelléTOTApres { get; set; }
public string Remarque { get; set; }
}
这是包含我试图绑定的表的数据库:
public partial class BDDInterneEntities : DbContext
{
public BDDInterneEntities()
: base("name=BDDInterneEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<CapitalisationActuelle> CapitalisationActuelle { get; set; }
public DbSet<DonneesDUMP> DonneesDUMP { get; set; }
public DbSet<PMRQTOTMGPS> PMRQTOTMGPS { get; set; }
public DbSet<Resultat> Resultat { get; set; }
}
这是我用来接收绑定数据的DataGrid:
<DataGrid x:Name="DonneesBrutes" ItemsSource="{Binding Path=ResultatCollection}" Margin="10,65,0,0" AutoGenerateColumns="False" EnableRowVirtualization="True" RowDetailsVisibilityMode="VisibleWhenSelected">
<DataGrid.Columns>
<DataGridTextColumn x:Name="PMRQ" Width="*" Binding="{Binding XPath=TOTMPMRQ}" Header="PMRQ"></DataGridTextColumn>
<DataGridTextColumn x:Name="LibellePMRQ" Width="*" Binding="{Binding XPath=LibelléTOTApres}" Header="Libellé PMRQ"></DataGridTextColumn>
<DataGridTextColumn x:Name="Ligne" Width="*" Header="Ligne"></DataGridTextColumn>
<DataGridTextColumn x:Name="OTM" Width="*" Header="OTM"></DataGridTextColumn>
<DataGridTextColumn x:Name="TOTM" Width="*" Header="TOTM"></DataGridTextColumn>
<DataGridTextColumn x:Name="LibelleTOTM" Width="*" Header="Libellé OTM"></DataGridTextColumn>
<DataGridTextColumn x:Name="GA" Width="*" Header="GA"></DataGridTextColumn>
<DataGridTextColumn x:Name="Discipline" Width="*" Header="Discipline"></DataGridTextColumn>
<DataGridTextColumn x:Name="DisciplineSubstituee" Width="*" Header="Discipline Substituée"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
我调用ViewModel来绑定数据,如下所示:
<Window.DataContext>
<local:ViewModel/>
</Window.DataContext>
带本地:
xmlns:local="clr-namespace:WpfApplication3;assembly="
其中ViewModel是绑定的核心:
class ViewModel:INotifyPropertyChanged
{
private BDDInterneEntities _BDDInterneEntities;
public ViewModel()
{
_BDDInterneEntities = new BDDInterneEntities();
ResultatCollection = new ObservableCollection<Resultat>(_BDDInterneEntities.Resultat);
}
public ObservableCollection<Resultat> ResultatCollection { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
}
我对此有两个主要问题。我在Resultat中有一些测试数据。当我启动时,我看到了Datagrid的图形界面,如下所示:
结果数据网格:http://uprapide.com/image/831306-capture_9978
正如我们在这张图中看到的,DataGrid绑定"知道"我的表Resultat中有两行,但我们没有看到Datas。如果我想将数据插入DataGrid的任何情况,就会出现另一个问题。如果我尝试这样做,我会出现"双向绑定需要PATH或XPATH"错误。
希望我提供了足够的信息,听起来这是我的主要问题。。
如果有人知道我做错了什么?
第1版:
第二个问题解决了,我使用了XPATH,不应该使用。但第一个问题仍然存在。我没有在DataGrid中看到数据。。另一方面也是如此,如果我将数据写入Interface DataGrid,它们就不会写入DB。
这就是我必须做的,我终于找到了我想要的:
<DataGrid x:Name="DonneesBrutes" ItemsSource="{Binding Path=ResultatCollection}" Margin="10,65,0,0" AutoGenerateColumns="False" EnableRowVirtualization="True" RowDetailsVisibilityMode="VisibleWhenSelected">
<DataGrid.Columns>
<DataGridTextColumn x:Name="PMRQ" Width="*" Binding="{Binding Path=TOTMPMRQ}" Header="PMRQ"></DataGridTextColumn>
<DataGridTextColumn x:Name="LibellePMRQ" Width="*" Binding="{Binding Path=LibelléTOTApres}" Header="Libellé PMRQ"></DataGridTextColumn>
我的错误是在<DataGridTextColumn>
上使用XPATH而不是PATH。然后,使用PATH=。对于双向绑定,效果同样好,听起来更有趣。