0

Я не хочу просто использовать MessageBox внутри методов, потому что иногда (из-за довольно больших сообщений) читабельность кода ухудшается, я бы хотел вынести свои MessageBox в какое нибудь отдельное место и доставать нужный мне MessageBox, когда мне он понадобится. Как это правильнее сделать? Все до чего я додумался - это создать статичный класс со статичными методами. Вот пример:

public static class NoticeService {
  public static void EmptyEmployeeCodeError() {
    MessageBox.Show("Empty code", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
  }

public static void InvalidEmployeeCodeError() { MessageBox.Show("Invalid code", "Error", MessageBoxButton.OK, MessageBoxImage.Error); }

public static MessageBoxResult DeleteApplicationDialog() { return MessageBox.Show("Are you sure you want to delete this application", "Dialog", MessageBoxButton.YesNo, MessageBoxImage.Question); }

public static MessageBoxResult LogoutEmployeeDialog() { return MessageBox.Show("Are you sure you want to log out", "Dialog", MessageBoxButton.YesNo, MessageBoxImage.Question); } }

Но мне кажется, что это не очень хорошее решение. Как мне переделать это?

  • Правильно - MVVM, где вы отделяете UI от данных, делите все на слои, которые мало связанны друг с другом. MVVM в свою очередь запрещает использовать UI элементы в коде, нужна абстракция поверх, сервис. Как сделать это написано тут. Так что, выбирайте, правильно вам, или тяп-ляп как сейчас. – EvgeniyZ Mar 26 '23 at 19:34
  • @EvgeniyZ я знаю про mvvm. Но разве использование mvvm в маленьких приложениях оправдано? И вообще я не понимаю к чему ваш ответ. Может я не правильно задал вопрос, проще говоря я хочу убрать длинную строчку (а иногда и не одну) с MessageBox из методов, чтобы они не были такими громоздкими. То есть я хочу сделать примерно такое, только для MessageBox: private bool IsInputEmpty => string.IsNullOrWhiteSpace(Input.Text); То есть я хочу сделать код более лаконичным. И вопрос в том, как лучше это сделать, с помощью статического класса или чего-нибудь другого. – ChineseCheese Mar 26 '23 at 19:49
  • 1
    Я не давал ответ, это комментарий, мы с вами просто общаемся. Использование MVVM есть смысл всегда, он упрощает жизнь в будущем. Вот я сейчас переписываю свой древний проект, там все без MVVM, знаете как я страдаю?) Если бы был MVVM, то мне пришлось бы всего 1 класс поменять, или даже один метод, а не пол проекта. "К чему ответ" - к тому, что правильно, по правилам MVVM, делать сервис, и потом просто делать по типу var askCloseVM = new AskVM("Do you want to close the application?");, вот и будет ваш диалог, с нужным текстом и результатом. Ну а статика - зло, советую забыть про нее. – EvgeniyZ Mar 26 '23 at 20:01
  • MessageBox - неудобная штука, его непросто позиционировать, я настрадался во времена винформ. Для отладки норм, а вот как штатное средство, часть UI приложения - корявый инструмент. Напишите своё окно, но или вообще панелью прямо в текущем окне показывайте. – aepot Mar 26 '23 at 22:51

0 Answers0