У меня есть отдельная 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");
Я понял проблему: Ctrl + . был переназначен FSI, когда я установил F #. Вот почему сброс сопоставления клавиш не устранил проблему: у меня все еще был F #. И ответ, на который я потерял другие сопоставления: «Те, которые отображаются с помощью FSI» (введите FSI в сопоставлениях клавиатуры; их всего два).
У вас есть "рабочая" визуальная студия? Вы можете экспортировать настройки (настройки только с клавиатуры) с этого аппарата и импортировать их на свой аппарат.
Ответ Кента: Точно, но чтобы ответить на ваш вопрос более подробно о Resharper и о том, почему он жалуется:
В случае ссылочного типа (класса) будет достаточно проверки на нулевое значение, поскольку это считается значением «по умолчанию» для ссылочного типа. Однако, для типа значения (такого как структура) значение по умолчанию НИКОГДА не будет нулевым. Следовательно, поскольку ваши SerializableEntity и UnSerializableEntity являются обобщенными, вы можете указать, что они являются ссылочными типами или типами значений, поэтому нулевая проверка, вероятно, не соответствует вашим ожиданиям. Что вы хотели бы проверить, так это убедиться, что параметр - это то, чем вы действительно хотите заниматься. В случае ссылочного типа вы не хотите заниматься нулевыми объектами. В случае типа значения вам не нужно беспокоиться о «обнуленном» значении.
Например: допустим, вы указали DateTime в качестве типа данных, с которым имеете дело. Вы действительно хотите добавить DateTimes, для которых не установлено никакого значения? Значением по умолчанию для DateTime является 1/1/0001, а не NULL,
Я столкнулся с той же проблемой, (Инструменты-Параметры-> Клавиатура) View.ShowSmartTag
- это поле, в котором вы можете вручную переназначить ярлык для Ctrl + .
Я знаю, что дата публикации несколько месяцев, но это должно помочь.
В привязках клавиш C # Visual Studio 2008 по умолчанию оба Ctrl + . и Shift + Alt + F10 карта для отображения смарт-тега.
Вы можете загрузить справочный плакат о привязке клавиш Visual C # 2008 здесь .
то, что случилось со мной ... убедитесь что клавиша "F lock" на клавиатуре (если у вас такая) включена .. я не шил, что выключаю, и ничего не работает нормально. (F5 - открыть диалог открытия, F10 перейти в режим разделения!)