У меня есть небольшое затруднение, которое я не смог разрешить, по крайней мере, в методе, который имеет смысл с точки зрения MVVM.
У меня есть сетка данных, которая содержит данные клиент-сотрудник с датами начала и окончания для каждого отношения клиент-сотрудник.
Общий DataSrid DataGrid - это ClientToEmp CollectionViewSource, связанный с ClientToEmpObservableCollection. Однако в столбце комбинированного списка, который позволяет им изменять / обновлять текущего сотрудника, ItemsSource - это Employee CollectionViewSource, связанный с User ObservableCollection (т. Е. Список всех сотрудников, которых они могут выбрать для этого клиента).
Эта часть работает нормально, когда я нажимаю на поле со списком, в списке отображаются нужные сотрудники для выбора. Однако, когда загружается сетка данных, я хочу, чтобы CurrentEmp из cvs ClientToEmp показывался как выбранный сотрудник (т. Е. Сотрудник, который в настоящее время назначен этому клиенту). Когда они щелкают по нему, они должны иметь возможность изменить Employee (из отдельных cvs employee), что затем обновит значение в ClientToEmp cvs.
<DataGrid Name="ClientToEmpMDG" ItemsSource="{Binding cvsClientToEmp}"
AutoGenerateColumns="False" AutoGeneratingColumn="Gen_AutoGridColumns">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding ClientName}" Header="Client Name" IsReadOnly="True"/>
<DataGridTemplateColumn Header="Current Emp">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Path=DataContext.cvsEmp, RelativeSource={RelativeSource AncestorType=Window}}"
DisplayMemberPath="DisplayName"
SelectedValuePath="User_ID"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Start Date">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker Name="StartDateDP" SelectedDate="{Binding Path=Start_Date}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="End Date">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker Name="EndDateDP" SelectedDate="{Binding Path=End_Date}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Как заставить нынешнего сотрудника правильно отображаться при загрузке? Выбранное значение должно соответствовать User_ID из двух ObservableCollections. Если я использую свойство SelectedValue, все выпадающие списки в сетке показывают одно и то же значение, и оно по-прежнему не привязывается должным образом к значению cvsClientToEmp, к которому я хочу привязать его. Я хочу, чтобы у каждого выпадающего списка была своя собственная ценность, а не у всех их было одно значение.
ОБНОВЛЕНИЕ: я исправил проблему, когда все комбинированные списки отображали одно и то же значение, изменив добавление «IsSynchronizedWithCurrentItem» на False ... Все еще не могу связать его со значением, возвращаемым из БД, в отношении того, кто является текущим сотрудником.