Здравствуйте.
Возникла задача написать приложение для заполнения семи таблиц реляционной БД.
В качестве инструментов были выбраны MSSQL, WPF, Entity Framework.
Примером была взята
статья.
Я убрал функционал поиска и группировку, создал интерфейс для семи таблиц (семь DataGrid), добавил коллекции во ViewModel.
Для примера будет достаточно двух таблиц.
private launchesEntities _dataContext;
public ObservableCollection<spacecraft> Spacecrafts { get; private set; }
public ObservableCollection<manufacturer> Manufacturers { get; private set; }
public MainWindowViewModel()
{
_dataContext = new launchesEntities();
Manufacturers = new ObservableCollection<manufacturer>(_dataContext.manufacturers);
Spacecrafts = new ObservableCollection<spacecraft>(_dataContext.spacecrafts);
Save = new ActionCommand(SaveChanges) { IsExecutable = true };
}
Немного интерфейса:
<DataGrid ItemsSource="{Binding Manufacturers}"
AutoGenerateColumns="False"
Grid.Row="4" Grid.Column="1" Margin="5"
RowDetailsVisibilityMode="VisibleWhenSelected">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding name}" Header="Name" Width="3*"/>
<DataGridTextColumn Binding="{Binding country}" Header="Country" Width="2*"/>
</DataGrid.Columns>
</DataGrid>
<DataGrid ItemsSource="{Binding Spacecrafts}"
AutoGenerateColumns="False"
Grid.Row="8" Grid.Column="1" Margin="5"
RowDetailsVisibilityMode="VisibleWhenSelected">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding name}" Header="Name" Width="3*"/>
<!-- Здесь необходим Combobox -->
</DataGrid.Columns>
</DataGrid>
Теперь мне необходимо разместить во второй колонке DataGrid, относящегося к Spacecrafts, выпадающие списки, позволяющие выбрать производителя, причем необходимо использовать связь по внешнему ключу, и показывать поле name, а изменять поле manufacturer_id.
Модель сущностей EF:
Я находил несколько примеров для решения подобной задачи, но моих ограниченных фундаментальных знаний недостаточно для использования в текущем контексте, XAML не является довольно очевидным инструментом.
Спасибо за помощь.