Я пишу приложение WPF, и в настоящее время я реорганизую некоторый многократно используемый код в базовый класс ViewModel, который могут наследовать мои другие модели viewmodel.Коллекция Cast Observable из базового класса в унаследованный класс
Одно поле недвижимости на этом базовом классе
public class MessageParentBase
{
MessageParentBase() {}
public string Name;
}
internal ObservableCollection<MessageParentBase> _GridData = new ObservableCollection<MessageParentBase>();
У меня есть последующее объявление свойства
public ObservableCollection<MessageParentBase> GridData
{
get { return _GridData; }
set { _GridData = value; }
}
Это прекрасно работает, и все моя проблема в том, что inerited классы фактически использовать класс последующих
Public class ChatMessage : MessageParentBase
{
public string Message;
}
и вид содержит сетку данных, которая является bo und к этому свойству GridData, но столбец, который должен быть привязан к полю Message из класса ChatMessage, пуст, и поля, найденные в классе MessageParentBase, заполняются.
Таким образом, я предполагаю, что существует проблема с представлением, не зная, что он должен перейти к ChatMessage из класса MessageParentBase.
Могу ли я сообщить, что объекты будут иметь тип «ChatMessage».
я подвигайте объявление свойства до унаследованной ViewModel, как
public ObservableCollection<ChatMessage> GridData
{
get { return _GridData; }
set { _GridData = value; }
}
, но это дает мне следующую ошибку: -
Не может неявно преобразовать тип «System.Collections.ObjectModel.ObservableCollection» to 'System.Collections.ObjectModel.ObservableCollection'
Нужно ли снимать на уровне представления или я могу изменить режимы просмотра, чтобы реализовать это лучше?
Любые предложения были бы весьма полезными.
Emlyn
Что вы подразумеваете под * cast на уровне просмотра *? Вы привязываете базовую модель просмотра и хотите показать свойства ChatMessage? Ваш вопрос непонятен. Покажите нам, что/как вы привязываете модель представления к представлению. – Joao
Также покажите класс messageParentBase. В его нынешнем виде ваш вопрос трудно выполнить. –
Надеюсь, мое редактирование поможет объяснить мой вопрос еще немного. – Emlyn