Je suis un noob WPF et j'espère cesser d'être une journée (Lol)non-travail WPF Reliure
Quoi qu'il en soit, je vais avoir des problèmes de liaison DataTable (obtenu à partir d'un OleDBDataAdapter) à un DataGrid. Même si le DataTable n'est pas vide, je n'obtiens rien sur le DataGrid, cela ne fonctionne que si je configure manuellement la propriété ItemsSource dans code-behind. Aidez-moi? [Je veux rendre ceci automatique afin que toutes les modifications apportées à la grille soient reflétées dans le DataTable, me permettant d'utiliser simplement OleDBCommandbuilder pour mettre à jour la base de données Access elle-même (Oui, je suis paresseux :)). Je pensais à étendre DataTable à mettre en œuvre INotifyCollectionChanged mais je ne suis pas sûr que ce soit faisables: S]
XAML:
<Grid>
<DataGrid Grid.Column="0" Grid.ColumnSpan="2" x:Name="ListaArticulos"
Padding="-5,0,0,0" AutoGenerateColumns="False" ItemsSource="{Binding Articulos}">
<DataGrid.Columns>
<DataGridTextColumn IsReadOnly="True" Width="Auto" Header="ID" Binding="{Binding ID}"/>
<DataGridTextColumn Header="Nombre Articulo" Binding="{Binding Nombre}"/>
<DataGridTextColumn Header="Categoria" Binding="{Binding Categoria}"/>
<DataGridTextColumn Header="Valor" Binding="{Binding Valor}"/>
<DataGridTextColumn Header="Cantidad" Binding="{Binding Cantidad}" />
<DataGridTextColumn Header="Color" Binding="{Binding Color}" />
<DataGridTextColumn Header="Material" Binding="{Binding Material}" />
<DataGridTextColumn Header="Referencia" Binding="{Binding Referencia}" Width="*"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
code-behind:
public DataTable _Articulos = new DataTable();
public DataTable Articulos { get { return _Articulos; } }
public MainWindow()
{
InitializeComponent();
ListaArticulos.DataContext = this;
ReadDB();
}
ReadDb() met à jour le Articulos DB.
Merci d'avance.
J'ai réussi à faire une classe DataTable qui implémente INotifyChanged l'ajout d'un appel à la PropertyChangedEventHandler sur chacun de ses événements liés aux lignes, encore une fois, Je n'ai rien sur la base de données initiale ... pourquoi? – Machinarius
DataContext doit implémenter l'interface INotifyPropertyChanged si nécessaire, pas le ItemsSource. – Matthieu
@ Alors ma fenêtre doit-elle implémenter cette interface? (Même que j'ai abandonné sur DataTable, im concevoir une classe personnalisée qui encapsulera des données de DB avec un ObservableCollection) – Machinarius