私は WPF アプリケーションを作成しており、現在、再利用されたコードを、他のビューモデルが継承できる基本 ViewModel クラスにリファクタリングしています。
この基本クラスの 1 つのプロパティ フィールドは
public class MessageParentBase
{
MessageParentBase() {}
public string Name;
}
internal ObservableCollection<MessageParentBase> _GridData = new ObservableCollection<MessageParentBase>();
後続のプロパティ宣言があります
public ObservableCollection<MessageParentBase> GridData
{
get { return _GridData; }
set { _GridData = value; }
}
これはうまく機能し、私の問題はすべて、初期化されたクラスが実際にフォロークラスを使用することです
Public class ChatMessage : MessageParentBase
{
public string Message;
}
ビューには、この GridData プロパティにバインドされたデータのグリッドが含まれていますが、ChatMessage クラスの Message フィールドにバインドされる必要がある列が空白で、MessageParentBase クラスにあるフィールドが入力されています。
したがって、ビューが MessageParentBase クラスから ChatMessage にキャストすることを知らないという問題があると思います。
オブジェクトが「ChatMessage」タイプになることをビューに通知できますか。
プロパティ宣言を継承されたビューモデルに移動しようとしました
public ObservableCollection<ChatMessage> GridData
{
get { return _GridData; }
set { _GridData = value; }
}
しかし、これは私に次のエラーを与えます:-
タイプ 'System.Collections.ObjectModel.ObservableCollection' を 'System.Collections.ObjectModel.ObservableCollection' に暗黙的に変換することはできません
ビュー レベルでキャストする必要がありますか、それともビューモデルを変更してこれをより適切に実装できますか?
どんな提案でも大歓迎です。
エムリン