Если вы воспользуетесь StaticResource
, он сохранит кисть от первой оценки. Однако вам вообще не нужно предоставлять ресурс для ShellPage
, и того, что у вас есть в App.xaml
, должно быть достаточно - у вас есть кисть с именем NavigationViewExpandedPaneBackground
, и эта кисть должна автоматически переопределить значение по умолчанию NavigationPane
( связанный вопрос конкретно говорил о том случае, когда имя ресурса отличается от встроенного). Более того, он должен работать в соответствии с текущей темой, поскольку он является частью тематических словарей.
Попробуйте удалить элемент
из ShellPage
, чтобы посмотреть, решит ли он проблему.
Я проверил это изменение, и оно работает правильно.
Светлая тема
Темная тема
Это то, что я делаю.
Другой способ, о котором я читал, - это чтобы модель знала, как показать ошибку (возможно, ErrorMessagePresenter), чтобы ошибка была отделена от оригинальный презентатор.
Я действительно не нашел применения для этого, для меня это всегда заканчивается презентатором и представлением, реализующим оба интерфейса.
В случае сообщений об ошибках я бы назвал некоторые базовые функции. Таким образом, вы можете выбрать, обновить ли окно статуса слева внизу и / или отобразить модальное окно сообщения.
В докладчике:
_windowManager.NoItemFound(errorMessage)
В диспетчере окон:
_statusBox.Text = errorMessage; MessageBox.Show(errorMessage);
Согласитесь с ответом Джерико - задачами Maven Ant. Смотрите следующее: Почему вы должны использовать Maven Ant Tasks вместо Maven или Ivy
Есть подробные примеры, которые должны заставить вас пойти.
-121--3535741-Решение состоит в том, что скользящий див должен иметь ширину, заданную в пикселях. Не используйте «» auto «» и «»% «». И у вас будет отличный результат! Проблема заключается в встроенных элементах, которые находятся в скользящем углублении
, но если они имеют ширину в px, высота будет идентичной. Попробуйте.
-121--935041-Мы проводим событие. В презентаторе вы регистрируете это событие:
public event PresenterEventHandler Message;
И затем поднимаете его так:
PresenterEventArgs pe = new PresenterEventArgs("Error message", Status.Error);
this.Message(this, pe);
Затем в представлении:
protected override void OnInit(EventArgs e)
{
this.presenter = new MyPresenter(this, MyBusinessService.Instance);
this.presenter.Message += new PresenterEventHandler(presenter_Message);
}
void presenter_Message(object sender, PresenterEventArgs pe)
{
// display error message
}
Вы можете передавать различные типы статусов обратно в представление таким образом, а не только сообщения об ошибках. У нас есть Успех, Ошибка, Заблокировано, Предупреждение, Справка.