Невозможно привести объект типа «MS.Internal.NamedObject» к типу «Task_Board.Models.TaskModel». - PullRequest
0 голосов
/ 09 марта 2020

Я работаю над программой для моего босса, которая создает дисплей, на который он может смотреть на мониторе, когда он приходит в ИТ-офис, чтобы он мог быстро увидеть, над чем мы работаем, с первого взгляда (аналогично scrum доска). Таким образом, Task_Board.Models.TaskModel - это класс, который я создал. У меня проблемы с удалением задач из базы данных. У меня он работает в другой части кода, чтобы удалить заданную задачу c, но когда я пытаюсь удалить все задачи, поместив этот лог c в al oop, он выдает ошибку выше. Вот метод, который работает для указанного объекта c:

private void DoneDelete_Click(object sender, RoutedEventArgs e)
{
    try
    {
        var item = (TaskModel)DoneList.SelectedValue;
        TaskItem task = NinjectRepo.Instance.TaskItemRepo.Get(item.TaskId);
        NinjectRepo.Instance.TaskItemRepo.Remove(task);
        Update();
    }
    catch (Exception a)
    {
        MessageBox.Show("System Message: " + a.Message, "ERROR");
    }
}

И это оригинальный проблемный код:

for (int i = ToDoList.Items.Count - 1; i >= 0; i--)
{
    var item = (TaskModel)ToDoList.Items.GetItemAt(i);
    TaskItem task = NinjectRepo.Instance.TaskItemRepo.Get(item.TaskId);
    NinjectRepo.Instance.TaskItemRepo.Remove(task);
}

Я попытался установить выбранное значение в другом в приведенном ниже коде, но он выдает ту же ошибку.

for (int i = ToDoList.Items.Count - 1; i >= 0; i--)
{
    ToDoList.SelectedValue = ToDoList.Items.GetItemAt(i);
    var item = (TaskModel)ToDoList.SelectedValue;
    TaskItem task = NinjectRepo.Instance.TaskItemRepo.Get(item.TaskId);
    NinjectRepo.Instance.TaskItemRepo.Remove(task);
}

Я не понимаю, что происходит между методом, который работает, и тем, который не работает, потому что это в основном те же логики c не так ли?

РЕДАКТИРОВАТЬ: Вот как я заполняю списки:

items = NinjectRepo.Instance.TaskItemRepo.Get().OrderBy(q=>q.Rank).AsQueryable();
//update ToDo Lists
var tdlist = await items.Select(q => new TaskModel { TaskId = q.TaskId, Status = 
q.Status, Rank = q.Rank, Type = q.Type.Name, Assigned = q.Date, Description = q.Description })
     .Where(items => items.Status.ToLower() == ToDoStatus.ToLower()).ToListAsync();
ToDoList.ItemsSource = tdlist;
ToDoList.Columns[1].Visibility = Visibility.Hidden;
ToDoList.Columns[4].Visibility = Visibility.Hidden;

1 Ответ

0 голосов
/ 09 марта 2020

Я выяснил, что проблема, с которой я столкнулся на самом деле, была вызвана держателем NewItemPlace, который автоматически добавляется в конце DataGrid. Поэтому, когда я пытался циклически перебирать элементы DataGrid, когда дело дошло до преобразования держателя NewItemPlace в TaskItem, он не мог этого сделать, потому что в строке не было данных. Поэтому, чтобы исправить это, я изменил DataGrid только для чтения, чтобы избавиться от лишней строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...