У меня есть три модели (Контакты, заметки, напоминания). Я хочу искать все эти данные и производить отфильтрованный результат в одном списке, и в зависимости от выбора я должен отображать соответствующее представление (UserControl) справа.Отображение нескольких моделей в одном списке ListView
Я хочу, чтобы правильный способ реализации дизайна или по крайней мере альтернативы этому методу, который я пробовал.
Теперь я пробовал это с помощью IntegratedViewModel, имеющего все свойства от всех трех моделей.
public class IntegratedViewModel
{
ContactModel _contactModel;
NoteModel _noteModel;
public IntegratedViewModel(ContactModel contactModel)
{
_contactModel = contactModel;
} // similarly for other models also
public string DisplayTitle // For displaying in ListView
{
get
{
If(_contactModel != null)
return _contactModel.Name;
If(_noteModel != null)
return _noteModel.Title;
}
}
// All other properties from the three models includin the Name/Title properties for displaying them in the corresponding views(UserControl)
}
Теперь я установил itemsSource как List<IntegratedViewModel>
.
Я должен привязать видимость представлений к некоторым свойствам в MainViewModel. Я попытался установить свойства bool, такие как IsContactViewSelected
, IsNoteViewSelected
, используя установщик SelectedEntity
, который привязан к элементу ListView SelectedItem.
public SelectedEntity
{
//get
set
{
oldvalue = _selectedEntity;
_selectedEntity = value;
// now i find the Type of model selected using `oldvalue.ModelType`
// where ModelType is a property in the IntegratedViewModel
// according to the type, i set one of the above bool properties to false
// and do the same for _selectedEntity but set the property to true
// so that the view corresponding to the selectedEntityType is visible
// and others are collapsed
}
}
[[Проблема видимости заявил здесь был решен]]
Прежде всего, я хотел бы поблагодарить вас за решение, особенно две вещи: 1) переключение DataTemplate в соответствии с DataType 2) Внедрение общего интерфейса. Поскольку AllSelection должен быть смесью моделей, я создал интерфейс для тезки, имея только свойство ID. AllSelection теперь хорошо связан с списком. Несмотря на то, что я знаю об обоих, нам нужен кто-то, чтобы колоть нас, чтобы использовать его в правильной ситуации. Так здорово, и вы тоже. – Amsakanna