我度过了最后三天努力使这项工作,我真的不知道如何做到这一点,总之:XAML绑定问题
<Grid DataContext="{Binding Path=Transaccion}">
<DataGrid Name="tr" AutoGenerateColumns="False" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTextColumn Header="Fecha" Binding="{Binding Path=Transaccion.Fecha}" />
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="70"/>
<ColumnDefinition Width="70"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Path=SubRubro.Nombre}"/>
<TextBlock Grid.Column="1" Text="{Binding Path=Monto}"/>
<TextBlock Grid.Column="2" Text="{Binding Path=TipoTransaccion}"/>
</Grid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
</Grid>
Transacciones
POCO具有通过DetallesTransaccion
引用的主键(交易详情)在他的Transaccion_Id
列中,这个XAML我希望所有引用DetallesTransaccion
的引用出现在rowDetails
中的相同Transaccion_Id
,现在只出现一个,每个Transaccion
。然后,我还有一个问题,就是有关数据绑定也是一样,我不能得到它的工作之一:
[Table("SubRubro")]
public class SubRubro
{
public int Id { get; set; }
public string Codigo { get; set; }
public string Nombre { get; set; }
public int? ParentId { get; set; }
public virtual SubRubro Parent { get; set; }
}
ALL SubRubros
必须在parentId
列自我参照表,所有SubRubro
■找一个直接父母,我不能让这个我都试过了,HierarchicalDataTemplate
,DataTemplate
的可视化表示,这里是我的表行的例子:
ID CODE NAME PARENTID
1 10.1 SubRubro 0 NULL(Dont have parent)
21 10.1.1 SubRubro anidado 0 1
22 10.1.2 SubRubro anidado 1 1
23 10.1.3 SubRubro anidado 2 1
24 10.1.1.1 SubRubro anidado 3 21
25 10.1.1.2 SubRubro anidado 4 21
你能告诉我吗?
编辑 这是我的交易类:
public partial class Transaccion
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Transaccion()
{
DetallesTransaccion = new HashSet<DetallesTransaccion>();
}
public int Id { get; set; }
[Column(TypeName = "date")]
public DateTime Fecha { get; set; }
[StringLength(50)]
public string Descripcion { get; set; }
public int AutorizaId { get; set; }
public int ConfeccionaId { get; set; }
public int CentroCostoId { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<DetallesTransaccion> DetallesTransaccion { get; set; }
public virtual Usuario Autoriza { get; set; }
public virtual Usuario Confecciona { get; set; }
}
交易明细:
public partial class DetallesTransaccion
{
public int Id { get; set; }
public int TransaccionId { get; set; }
public int SubRubroId { get; set; }
public decimal? Monto { get; set; }
public TipoTransaccion TipoTransaccion { get; set; }
public virtual SubRubro SubRubro { get; set; }
public virtual Transaccion Transaccion { get; set; }
}
public enum TipoTransaccion
{
Debita = 0,
Acredita = 1
}
视图模型:(测试)
private NeotekDB ctx = new NeotekDB();
public List<DetallesTransaccion> Transaccion
{
get { return ctx.DetallesTransaccion.Include("Transaccion").ToList(); }
}
public List<Transaccion> Detalles
{
get { return ctx.Transacciones.Include("DetallesTransaccion").ToList(); }
}
两个查询是相同的,但不同的切入点,尝试看看是否有差异,但没有。 EDIT 2 我得到这个:
遵循一些MVVM WPF教程,你会得到它的窍门。您需要通知您更新的视图 - INotifyPropertyChanged和ObservableableCollection对此非常有用 - 并且您需要为控件设置正确的'DataContext'。另外,我的交易类是什么样的?我有一种感觉,你的'ItemsSource'绑定不正确。 – Kcvin
我无法在应用程序启动后显示所需的值,与INPC无关 –
请接受我的建议。你的ItemsSource应该绑定到'ObservableCollection'这样的东西,你应该添加项目。如果数据在应用程序启动之前就存在,并且您没有添加/删除,则需要在调用MainWindow的InitializeComponent()之前设置您的DataContext。 –
Kcvin