我在我的视图的代码隐藏文件中有以下代码:
private string GetSelectedSchoolclassCode()
{
return ((SchoolclassCode)cboSchooclassCodeList.SelectedItem).SchoolclassCodeName;
}
private void dgTimeTable_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var columnNumber = dgTimeTable.CurrentCell.Column.DisplayIndex;
var timetable = dgTimeTable.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;
}我想把所有这些代码放在ViewModel中。问题已经从XAML中的CurrentColumn.DisplayIndex开始了。我不能用绑定来声明它,因为语法是不允许的。WPF认为DisplayIndex是一个附加属性...
你怎么做?
发布于 2010-06-30 06:52:30
在处理诸如数据网格之类的复杂控件时,实现纯粹的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的绑定以及数据网格上的currentitem到视图模型的绑定
https://stackoverflow.com/questions/3121150
复制相似问题