Я собирался перенести довольно новый проект с Caliburn Micro на Catel. Я хочу поделиться с вами своими мыслями и получить от вас обратную связь.
Начнем со структуры моего приложения:
- Приложение WPF на основе MVVM
- Пакет управления пользователями Telerik
- Использование ServiceStack для получения данных с веб-сервера
- Использование SimpleInjector для IoC
- NLog для ведения журнала
- TCP/IP-соединение с удаленным сервером
- FW 4.0 с Microsoft.BCL.Async
- Приложение похоже на Visual Studio (Docking)
Теперь, когда структура почти ясна, я начну с вопросов:
- Мои модели заполняются через ServiceStack.OrmLite, поэтому они являются POCO со свойством, а не свойством зависимости, поскольку модели совместно используются на веб-сервере и в части WPF, которую я не хочу наследовать от ModelBase, если мне придется заново создавать объект, который наследуется от базы моделей, когда данные поступают на часть WPF?
- Данные, отображаемые в RadGridView, привязаны к свойству модели, насколько я видел здесь , я должен передать ViewModel модель, как я могу связать эти данные с сеткой или представлением в целом?
- Я нахожу довольно полезным в CM соглашение, поэтому, если я назову TextBox x:Name=Surname, он ищет свойство Surname, в Catel я должен это сделать? или есть что-то подобное?
- В моем приложении я широко использую асинхронность. Может ли это сделать Catel?
- Я читал, что я могу заменить поставщика Ioc Catel по умолчанию на SimpleInjector ... кто-нибудь преуспел в этом?
Спасибо
ОБНОВЛЕНИЕ №1
Пояснения к моделям
Для простоты рассмотрим объект типа Person, который будет загружаться из веб-сервиса через сервисный стек.
[Alias("Person")]
public class Person
{
[Alias("NAME")]
public string Name {get;set;}
[Alias("SURNAME")]
public string Surname {get;set;}
}
Это будет возвращено как IList и, возможно, загружено в GridView.
Теперь пользователь хочет отредактировать его, поэтому я загружу этого человека в другую модель представления с именем UpdatePersonViewModel (показан во всплывающем окне)
Если я не внедрил его, как вы сделали в своем образце, я не смогу использовать Catel Validation и так далее, верно? так что, может быть, мне нужно создать PersonModel, который принимает параметр Person как конструктор, а затем создает объект, верно?
5. Для SimpleInjector я начал использовать его давным-давно, прочитав этот пост
- Если я должен использовать классическую привязку для свойств, для привязки событий я должен использовать команды? что, если у меня есть пользовательский элемент управления, для которого нет команды?
в Caliburn я могу прикрепить сообщение в форме
cal:Message.Attach="[Event DataLoading] = "[Action Something($eventArgs)"] .
В Catel, как я должен связать это событие??