[C# WPF] Bindowanie ItemsSource i DataContext


(Marcin Obala) #1

Cześć

 

Potrzebuje jakiegoś tutoriala który wyjaśni mi jak zrobić coś takiego. 

 

Mam ObservableCollectionList, mam ich kilka. Mam też kilka dataGridów. Chciałbym teraz zabindować do mojego dataGrida tą listę bez Code-Behind albo z bardzo niewielką ilością kodu. Aktualnie mam tak że przy starcie programu, przypisuje do ItemsSource moją listę i tyle.

ZleceniaDataGrid.ItemsSource = _zlecenia;

Każda z kolumn ma ustawione Binding

<extendedGridControl:ExtendedDataGrid x:Name="ZleceniaDataGrid" AutoGenerateColumns="False" Margin="5,0,5,235" SelectedCellsChanged="SelectedCellsChanged_ZleceniaDataGrid" CanUserAddRows="False" IsReadOnly="True">
       <extendedGridControl:ExtendedDataGrid.Columns>
           <extendedColumn:ExtendedDataGridTextColumn Header="ZlecenieID" x:Name="ZlecenieTabZlecenieIDColumn" Binding="{Binding ZlecenieID}" Visibility="Hidden"/>
           <extendedColumn:ExtendedDataGridTextColumn Header="Numer zlecenia" x:Name="ZlecenieTabNrZleceniaColumn" Binding="{Binding NrZlecenia}" Visibility="Visible"/>
           <extendedColumn:ExtendedDataGridTextColumn Header="Produkt" x:Name="ZlecenieTabProduktColumn" Binding="{Binding ProduktString}" Visibility="Visible"/>
           <extendedColumn:ExtendedDataGridTextColumn Header="Liczba operatorów" x:Name="ZlecenieTabProduktLiczbaOperatorowColumn" Binding="{Binding ProduktLiczbaOperatorowString}" Visibility="Visible"/>
           <extendedColumn:ExtendedDataGridTextColumn Header="Krok produkcji" x:Name="ZlecenieTabProduktKrokProdukcjiColumn" Binding="{Binding ProduktKrokProdukcjiString}" Visibility="Visible"/>
           <extendedColumn:ExtendedDataGridTextColumn Header="Dział" x:Name="ZlecenieTabDzialLiniaColumn" Binding="{Binding DzialString}" Visibility="Visible"/>
           <extendedColumn:ExtendedDataGridTextColumn Header="Linia" x:Name="ZlecenieTabLiniaColumn" Binding="{Binding LiniaString}" Visibility="Visible"/>
           <extendedColumn:ExtendedDataGridTextColumn Header="Czas od" x:Name="ZlecenieTabCzasOdColumn" Binding="{Binding CzasOd}" Visibility="Visible"/>
           <extendedColumn:ExtendedDataGridTextColumn Header="Czas do" x:Name="ZlecenieTabCzasDoColumn" Binding="{Binding CzasDo}" Visibility="Visible"/>
           <extendedColumn:ExtendedDataGridTextColumn Header="Czas trwania" x:Name="ZlecenieTabCzasTrwaniaColumn" Binding="{Binding CzasTrwania}" Visibility="Visible"/>
           <extendedColumn:ExtendedDataGridTextColumn Header="Ilość" x:Name="ZlecenieTabIloscColumn" Binding="{Binding Ilosc}" Visibility="Visible"/>
           <extendedColumn:ExtendedDataGridTextColumn Header="LiniaID" x:Name="ZlecenieTabLiniaIDColumn" Binding="{Binding LiniaID}" Visibility="Hidden"/>
     </extendedGridControl:ExtendedDataGrid.Columns>
</extendedGridControl:ExtendedDataGrid>

Teraz drugi etap. Mam standardowe kontrolki typu TextBox, ComboBox.

 

Teraz jak zaznaczę jakiś wiersz w DataGridzie to do kontrolek TextBox, comboBox przypiszą się wartości z zaznaczonego wiersza, w przypadku ComboBox pokaże się lista wybierana (pracuję na klasach EntityFramework). Oczywiście z najmniejszym nakładem kodu. Aktualnie robię tak że jak wykryję że zmieniło się zaznaczenie to przepisuje property do kontrolek.