У меня есть сетка данных, связанная с наблюдаемой коллекцией с именем ListOfEmployeeDetails. Сетка данных имеет три столбца, а именно: «Имя», «Дата рождения» и «Опыт». В каждой ячейке третьего столбца (т. Е. Опыта) я поместил кнопку, которая должна отображать список проектов, над которыми сотрудник работал в течение своего опыта.
Я не могу заполнить список проектов при нажатии кнопки в строке данных.
Вот что я пробовал:
EmployeeDetails.Xaml
<Datagrid ItemsSource="{Binding ListOfEmployeeDetails}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Name"/>
<DataGridTemplateColumn Header="Date Of Birth"/>
<DataGridTemplateColumn Header="Experience">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button
x:Name = "DropDownButton"
Tag="{Binding RelativeSource= {RelativeSource Mode=FindAncestor,AncestorType={x:Type Window}},Path=DataContext}"
Command="{Binding Path=DataContext.LoadDropDownMenu,RelativeSource={RelativeSource FindAncestor, AncestorType= {x:Type DataGrid}}}"
CommandParameter="{Binding EmpId }">
<Button.ContextMenu>
//TODO: Need to display the list of Project Names for selected Employee ID
</Button.ContextMenu>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</Datagrid>
EmployeeDetailsViewModel.cs
public class EmployeeDetailsModel
{
public string EmpId { get; set; }
public string EmpName { get; set; }
public string EmpDOB { get; set; }
public string EmpExperience { get; set; }
public ObservableCollection<ProjectModel> ListOfProjects { get; set; }
}
private ObservableCollection<EmployeeDetailsModel> _ListOfEmployeeDetails;
public ObservableCollection<EmployeeDetailsModel> ListOfEmployeeDetails
{
get { return _ListOfEmployeeDetails; }
set { SetProperty(ref _ListOfEmployeeDetails, value); }
}
public ICommand LoadDropDownMenu
{
get { return new DelegateCommand(LoadProjectDetails); }
}
private void LoadProjectDetails(object obj)
{
ListOfProjects.Clear();
foreach(var employeeDetail in ListOfEmployeeDetails)
{
if(employeeDetail.EmpId == obj.ToString())
{
ListOfProjects.Add(role);
}
}
}
public class ProjectModel
{
public string ProjectName { get; set; }
public string ProjectID { get; set; }
}
Какие изменения я должен сделать, чтобы заполнить список имен проектов в контексте
меню. Любая помощь будет высоко ценится.