0

В используемой мной библиотеке WPF-UI есть контрол - snackbar. Мне нужно показать его если произошла ошибка во viewmodel, но вопрос - как? Ведь вызывается он только из код бехайнд, а это уже нарушение его принципов. Ссылка на либу - https://github.com/lepoco/wpfui, ссылка на snackbar контрол - https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui/Controls/Snackbar.cs.

Tynett
  • 99
  • 1
  • 5
  • https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui.Demo/Views/Pages/Controls.xaml.cs#L84 и https://github.com/lepoco/wpfui/blob/main/src/Wpf.Ui.Demo/Views/Container.xaml.cs#L62 – EvgeniyZ Aug 20 '22 at 16:10
  • а что я должен из этого понять? – Tynett Aug 20 '22 at 17:35
  • немного разобрался, правда не могу понять почему в результате services.add(MainPage), в код бехайнде возвращает налл – Tynett Aug 20 '22 at 18:19
  • а что я должен из этого понять? - то, как в WPFUI вызывать snackbar. За это отвечает сервис, зовется DialogService, вам надо его инициализировать, передать в класс окна, там зарегистрировать конкретный snackbar через .SetSnackbarControl(...);, а дальше, в любом VM слое, передавайте туда DialogService (тот, что ранее был инициализирован) и вызывайте его метод .Show("..."). Это конечно если не используете IoC контейнеры, без него вы обязаны сами все инициализировать и передавать куда надо, ну а если используете, то services.AddSingleton<ISnackbarService, SnackbarService>();. – EvgeniyZ Aug 20 '22 at 18:42
  • Краткое пояснение что такое сервисы, IoC контейнер и прочее - я рассказывал [в этом ответе] (https://ru.stackoverflow.com/a/1278817/220553), советую изучить. Там правда Prism и DryIoc в качестве основы, но суть не меняет, меняется лишь чуть подход и название методов, ибо в WPFUI из коробки заточено все под IoC от Microsoft, он даже проще и удобней) Так что, если не используете IoC, то советую понять и начать использовать, очень удобная штука! – EvgeniyZ Aug 20 '22 at 18:45
  • я использую, но когда я в код бехайнде пытаюсь заинджектить сервис, чтоб setsnackbarcontrol, он возвращает нулл – Tynett Aug 20 '22 at 18:56

0 Answers0