Как запросить представление для отображения диалога и получения результата от модели WPF / MVVM?

In [15]: def sum_col(df, col, new_col):
   ....:     df[new_col] = df[col].sum()
   ....:     return df

In [16]: df.groupby("A").apply(sum_col, 'values', 'sum_values_A')
Out[16]: 
   A  B  values  sum_values_A
0  1  1      10            25
1  1  2      15            25
2  2  1      20            45
3  2  2      25            45
0
задан ed22 11 March 2019 в 13:56
поделиться

1 ответ

У меня есть отдельная DLL для услуг. Там есть MessageBoxService.
Этот сервис ссылается на окно. Я оставлю реализацию до вас.
Мой Сервис реализует интерфейс для инъекций, но это не так, просто на всякий случай.
Вот фрагмент кода, который он предоставляет:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Threading;

namespace Services.MessageBox
{
    public class MessageBoxService : IMessageBoxService
    {
        Dispatcher dispatcher;
        private Window mainWindow;

        public MessageBoxService()
        {
            dispatcher = Application.Current.Dispatcher;
            mainWindow = Application.Current.MainWindow;
        }

        private void UIThread(Action execute)
        {
            dispatcher.Invoke(execute);
        }

        public void Show(string caption, string message)
        {
            UIThread(() =>
            {
                System.Windows.MessageBox.Show(mainWindow, message, caption, System.Windows.MessageBoxButton.OK);
            });
        }

        public bool? ShowDialog(string caption, string message)
        {
            bool? result = null;

            UIThread(() =>
            {
                result = new Windows.Modal(message, caption).ShowDialog(mainWindow);
            });

            return result;
        }
    }
}

Тогда вы будете использовать его в своей ViewModel следующим образом:

var answer = messageBoxService.ShowDialog("Title Here", "Message to display");  
0
ответ дан XAMlMAX 11 March 2019 в 13:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: