Я пытаюсь получить DataGridComboBoxColumn
(или DataGridTemplateColumn
с ComboBox
), чтобы заполнить список портов и по умолчанию каждая строка порта, который уже хранится в базе данных. У меня есть DataGridTemplateColumn
с ComboBox
, заполняющим порты, но я не могу заставить его выбрать то, что уже хранится в базе данных.Заполнение DataGridComboBox в сетке с SelectedItem
Я использую Entity Framework, и у меня есть 2 таблицы, «Маршрут» и «Порт». «Маршрут» имеет 2 внешних ключа для «Порт назначения» и «Порт прибытия».
У меня есть 2 ObervableCollections, один для списка портов и другой для списка маршрутов. В коллекции маршрутов есть «Порт1» и «Порт2» для назначения/прибытия соответственно.
Это то, что я в настоящее время:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.PortCollection, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
DisplayMemberPath="PortName"
SelectedItem="{Binding DataContext.RouteCollection, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
SelectedValue="{Binding DataContext.Port1, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}"
SelectedValuePath="PortId">
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
Но, как я сказал, что это только список доступных портов, а в противном случае пустой. Извините, если я не сделал себя слишком ясным, я не очень хорошо разбираюсь в общем.
Вот мои коллекции:
public ObservableCollection<Port> PortCollection { get; set; }
//List of Routes
private ObservableCollection<Route> _RouteCollection;
public ObservableCollection<Route> RouteCollection
{
get { return _RouteCollection; }
set
{
_RouteCollection = value;
Set(() => RouteCollection, ref _RouteCollection, value);
}
}
Там явно что-то очевидно не так, как это должно быть вполне обычное дело делать, но я схожу с ума в течение 4-х часов, на это просто получить это далеко! :(
Большое спасибо