Здравствуйте, karbofos42, Вы писали:
K>Здравствуйте, okon, Вы писали:
O>>И в итоге опять спрашивается нафига еще одна сущность в виде библиотеки с именем Prism, может там это как-то красивее решается чем в примере из документации (https://prismlibrary.com/docs/wpf/dialog-service.html) ?
K>Ну, если хочется самому создавать всякие BindableBase, DialogService, прикручивать IoC и т.п. то Prism не нужен.
K>Логично, что всё, что есть в Prism, можно сделать самому 
Не я понимаю вещи на которые тратится например час два и более.
K>Можно и WPF не брать, а сделать свой, еще и кроссплатформенный.
Это ты передергиваешь, все таки написать WPF это большие трудозатраты — не сравнимые с объявлением интерфейса с парой методов.
В призме нету DialogService готового, только интерфейс. А реализовывать также самому надо.
В том же примере погляди, я бы еще понял если они там запилили что-то типа ChildWindow как в wpfToolkit , это хотя бы упрощает решение.
Вот все надо реализоывать вручную чтобы показать диалог. Чем это решение упрощает жизнь ?
ublic class NotificationDialogViewModel : BindableBase, IDialogAware
{
private DelegateCommand<string> _closeDialogCommand;
public DelegateCommand<string> CloseDialogCommand =>
_closeDialogCommand ?? (_closeDialogCommand = new DelegateCommand<string>(CloseDialog));
private string _message;
public string Message
{
get { return _message; }
set { SetProperty(ref _message, value); }
}
private string _title = "Notification";
public string Title
{
get { return _title; }
set { SetProperty(ref _title, value); }
}
public event Action<IDialogResult> RequestClose;
protected virtual void CloseDialog(string parameter)
{
ButtonResult result = ButtonResult.None;
if (parameter?.ToLower() == "true")
result = ButtonResult.OK;
else if (parameter?.ToLower() == "false")
result = ButtonResult.Cancel;
RaiseRequestClose(new DialogResult(result));
}
public virtual void RaiseRequestClose(IDialogResult dialogResult)
{
RequestClose?.Invoke(dialogResult);
}
public virtual bool CanCloseDialog()
{
return true;
}
public virtual void OnDialogClosed()
{
}
public virtual void OnDialogOpened(IDialogParameters parameters)
{
Message = parameters.GetValue<string>("message");
}
}
Т.е. в данном случае намного и дешевле объявить свой интерфейс чем тащить дополнительный модуль отдельную сборку ради этого.
А BindableBase есть во всех MVVM библиотеках, IoC также подключается независимо от Prism, даже когда это не интерфейсный проект.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов