Может быть сложно и довольно сложно получить чистое разделение XAML / ViewModel при работе со сложными элементами управления, такими как сетка данных. В некоторых случаях может быть лучше иметь немного кода для достижения более чистого XAML и кода.
возможно попробуйте
private void dgTimeTable_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var columnNumber = dgTimeTable.CurrentCell.Column.DisplayIndex;
((YourViewModel)DataContext).SetDisplayIndex(columnNumber);
}
и на ваш взгляд модель имеет остаток кода
private string GetSelectedSchoolclassCode()
{
return ((SchoolclassCode)SelectedSchooclass).SchoolclassCodeName;
}
public int SetDisplayIndex(int columnNmber)
{
var timetable = CurrentItem as TimeTableViewModel;
switch (columnNumber)
{
case 0: timetable.SchoolclassCodeMonday = GetItemValue(timetable.SchoolclassCodeMonday); break;
case 1: timetable.SchoolclassCodeTuesday = GetItemValue(timetable.SchoolclassCodeTuesday); break;
case 2: timetable.SchoolclassCodeWednesday = GetItemValue(timetable.SchoolclassCodeWednesday); break;
case 3: timetable.SchoolclassCodeThursday = GetItemValue(timetable.SchoolclassCodeThursday); break;
case 4: timetable.SchoolclassCodeFriday = GetItemValue(timetable.SchoolclassCodeFriday); break;
case 5: timetable.SchoolclassCodeSaturday = GetItemValue(timetable.SchoolclassCodeSaturday); break;
case 6: timetable.SchoolclassCodeSunday = GetItemValue(timetable.SchoolclassCodeSunday); break;
}
}
private string GetItemValue(string schoolclassCodeWeekDay)
{
if (schoolclassCodeWeekDay == null)
schoolclassCodeWeekDay = GetSelectedSchoolclassCode();
else
schoolclassCodeWeekDay = null;
return schoolclassCodeWeekDay;
}
При условии, что вы включили привязки для комбинированного списка в SelectedSchooclass и текущий элемент в сетке данных к модели представления