У меня есть два пользовательских представления на странице, только одно из них должно быть видно одновременно. Я хочу, чтобы представление было инициализировано только тогда, когда оно станет видимым *. Но происходит то, что Xamarin инициализирует КАЖДЫЙ вид на странице, я попробовал несколько способов, пытаясь сказать Xamarin: «не инициализируйте это сейчас», это один из них:
<ContentView>
<ContentView.Triggers>
<DataTrigger TargetType="ContentView" Binding="{Binding ViewType,Mode=TwoWay}" Value="0">
<Setter Property="Content">
<Setter.Value>
<views:View1/>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger TargetType="ContentView" Binding="{Binding ViewType,Mode=TwoWay}" Value="1">
<Setter Property="Content">
<Setter.Value>
<views:View2/>
</Setter.Value>
</Setter>
</DataTrigger>
</ContentView.Triggers>
</ContentView>
То, что я ожидал когда я впервые попробовал этот код: когда ViewType
меняется на 0
, свойство Content
получает fre sh new View1()
и то же самое с View2
, но оба они инициализируются при загрузке страницы только в первый раз.
Чтобы проиллюстрировать, зачем мне это нужно, у меня есть страница, на которой отображается либо карта, либо CollectionView
. Из-за ограничений привязки в элементе управления картой я выполняю всю работу, когда элемент управления инициализируется в выделенном фрагменте кода, поэтому всякий раз, когда представление, содержащее карту, становится видимым (это означает, что данные могли измениться), мне необходимо повторно инициализировать элемент управления для обновления карты.
Чего я хочу добиться, в соответствии с приведенным выше примером, когда настраиваемое представление становится видимым, я хочу, чтобы оно было инициализировано, будь то при загрузке страницы или при изменении привязки данных.
* на visibility I m Это может быть не только свойство IsVisible
.