<ComboBox
DisplayMemberPath="FileName"
ItemsSource="{Binding DbConfigCollection, Mode=TwoWay}"
SelectedItem="{Binding TaskOptions.TargetDatabase, Mode=TwoWay}" />
public CreateTaskViewModel()
{
TaskOptions = new TaskOptions();
this.schedulerFactory = schedulerFactory;
var configs = DbConfigHelper.GetDbConfigs();
if (configs != null) DbConfigCollection = new ObservableCollection<DbConfig>(configs);
CronExpressions = CronExpressionHelper.GetCronExpressions();
}
SelectedItem选中项的对象必须在ItemsSource数据源中,是同一对象。TaskOptions和DbConfigCollection在初始化页面时创建,而TaskOptions.TargetDatabase指向的并不是DbConfigCollection中的对象,需要重新绑定。
if (selectTask.FirstOrDefault() != null)
{
viewModel.TaskOptions = selectTask.FirstOrDefault();
viewModel.TaskOptions.Database = viewModel.DbConfigCollection.Where(c => c.FileName == selectTask.FirstOrDefault().Database.FileName).FirstOrDefault();
viewModel.TaskOptions.TargetDatabase = viewModel.DbConfigCollection.Where(c => c.FileName == selectTask.FirstOrDefault().TargetDatabase.FileName).FirstOrDefault();
viewModel.IsEdit = true;
}