Сообщение Re[8]: А что собственно сделали в Prism от 28.02.2020 2:55
Изменено 28.02.2020 3:02 okon
Re[8]: А что собственно сделали в Prism
Здравствуйте, karbofos42, Вы писали:
K>Здравствуйте, okon, Вы писали:
O>>И в итоге опять спрашивается нафига еще одна сущность в виде библиотеки с именем Prism, может там это как-то красивее решается чем в примере из документации (https://prismlibrary.com/docs/wpf/dialog-service.html) ?
K>Ну, если хочется самому создавать всякие BindableBase, DialogService, прикручивать IoC и т.п. то Prism не нужен.
K>Логично, что всё, что есть в Prism, можно сделать самому
K>Можно и WPF не брать, а сделать свой, еще и кроссплатформенный.
Так в призме нету DialogService готового, только интерфейс. А реализовывать также самому надо.
В том же примере погляди, я бы еще понял если они там запилили что-то типа ChildWindow как в wpfToolkit , это хотя бы упрощает решение.
Вот все надо реализоывать вручную чтобы показать диалог. Чем это решение упрощает жизнь ?
Т.е. в данном случае намного и дешевле объявить свой интерфейс чем тащить дополнительный модуль отдельную сборку ради этого.
А BindableBase есть во всех MVVM библиотеках, IoC также подключается независимо от Prism, даже когда это не интерфейсный проект.
K>Здравствуйте, okon, Вы писали:
O>>И в итоге опять спрашивается нафига еще одна сущность в виде библиотеки с именем Prism, может там это как-то красивее решается чем в примере из документации (https://prismlibrary.com/docs/wpf/dialog-service.html) ?
K>Ну, если хочется самому создавать всякие BindableBase, DialogService, прикручивать IoC и т.п. то Prism не нужен.
K>Логично, что всё, что есть в Prism, можно сделать самому
K>Можно и 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, даже когда это не интерфейсный проект.
Re[8]: А что собственно сделали в Prism
Здравствуйте, 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 , это хотя бы упрощает решение.
Вот все надо реализоывать вручную чтобы показать диалог. Чем это решение упрощает жизнь ?
Т.е. в данном случае намного и дешевле объявить свой интерфейс чем тащить дополнительный модуль отдельную сборку ради этого.
А BindableBase есть во всех MVVM библиотеках, IoC также подключается независимо от Prism, даже когда это не интерфейсный проект.
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, даже когда это не интерфейсный проект.