Cześć,
mam problem z ładowaniem danych do datagrid w wpf.
W jednym user control mam dwa datagridy. Do pierwszego datagridu dane ładują się z konstruktora pomyślnie natomiast do drugiego powinny załadować się po zaznaczeniu wiersza z pierwszego datagrida.
Obsłużyłem zdarzenie, dane są wyciągane z bazy (kolekcja jest zapełniona)ale nie są jakby bindowane pomimo że ta kolekcja jest NotifyOfPropertyChange (używam Caliburn.Micro).
Prosze o pomoc , oto mój kod
XAML:
<!--Grid 1-->
<DataGrid AutoGenerateColumns="False"
Style="{DynamicResource DataGridStyle1}"
ItemsSource="{Binding Invoices, Mode=TwoWay}"
SelectedItem="{Binding SelectedInvoice, Mode=TwoWay}"
IsReadOnly="True"
CanUserAddRows="True"
CanUserDeleteRows="False" Grid.Column ="0" Grid.Row="0"
cm:Message.Attach="[Event MouseLeftButtonUp] = [Action DispalyInvoiceItems]"
>
<!--Grid 2-->
<DataGrid AutoGenerateColumns="False"
Style="{DynamicResource DataGridStyle1}"
ItemsSource="{Binding InvoiceItems, Mode=TwoWay}"
SelectedItem="{Binding SelectedInvoiceItems, Mode=TwoWay}"
IsReadOnly="True"
CanUserAddRows="True"
CanUserDeleteRows="False" Grid.Column ="0" Grid.Row="2" >
C#:
// źródło pierwszy grid
private BindableCollection<InvoiceModel> _invoices;
public BindableCollection<InvoiceModel> Invoices
{
get { return _invoices; }
set
{
_invoices = value;
NotifyOfPropertyChange("Invoices");
}
}
//źródło drugi grid:
private BindableCollection<InvoiceItemsModel> _items;
public BindableCollection<InvoiceItemsModel> InvoiceItems
{
get { return _items; }
set
{
_items = value;
NotifyOfPropertyChange("InvoiceItems");
}
}
//konstruktor:
public InvoicesViewModel()
{
_invoices = new BindableCollection<InvoiceModel>();
_invoices.AddRange(GetInvoices());
}
//Metoda wyciągająca dane do drugiego grida
public void DispalyInvoiceItems()
{
_items = new BindableCollection<InvoiceItemsModel>();
_items.AddRange(GetInvoiceItems());
}