Общий заголовок в приложении Xamarin.Forms - PullRequest
0 голосов
/ 16 октября 2019

Есть ли способ реализовать совместно используемый компонент TitleView в AppShell Xamarin.Forms? Я попробовал несколько подходов, но это не работает так, как я задумал.

Я пытаюсь добиться чего-то вроде следующего:

  • Оболочка приложения с несколькими вкладкамии обычная оболочка TitleView
  • TitleView - это просто ContentView (назовем его Exposure) с меткой для отображения результата расчета и кнопкой обновления для извлечения данных и пересчета
  • Изменение вкладкине должно влиять на состояние TitleView

Что я пробовал:

  • Инициализировать один экземпляр компонента Exposure (View и ViewModel) и настроить его наИнфраструктура DI для использования только этого экземпляра (singleton).
  • Когда инициализируются страницы, я получаю единственный экземпляр компонента Exposure и назначаю его свойству Shell.TitleView.

Делая это, я надеялся, что состояние «Экспозиция» будет одинаковым на всех вкладках (в конце концов, один экземпляр ...), но в результате я нажимаю кнопку «Обновить». обновляет только расчет на текущей вкладке Компонент «Экспозиция», меняющаяся вкладка предоставит мне компонент «Экспозиция» со старым состоянием. Я удивлен, что это не поддерживается "из коробки" (настройте titleView на уровне оболочки), но я могу что-то упустить.

Может быть не актуально, но я использую ReactiveUI (MVVM) и Splat (внедрение зависимостей))

Следующее, что я хочу попробовать, - это вызвать обновление, когда каждая страница появляется снова, но это кажется изворотливым.

1 Ответ

0 голосов
/ 16 октября 2019

Вы можете создать базовую ContentPage и установить стиль TitleView .

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"
             x:Class="xxx.BaseContentPage">
    <NavigationPage.TitleView>
        <StackLayout>
            //...
        </StackLayout>
    </NavigationPage.TitleView>
    <ContentPage.Content>
        <StackLayout>
            //...
        </StackLayout>
    </ContentPage.Content>
</ContentPage>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...