我度過了最後三天努力使這項工作,我真的不知道如何做到這一點,總之: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