Eu tenho um modelo que possui uma propriedade observável chamada visitor
(que é um objeto com uma propriedade bool chamada valid
).
Essa visitor
propriedade estará null
no início da execução, mas de acordo com alguma condição, isso visitor
é instanciado e a valid
propriedade é atribuída true
ou false
.
No arquivo XAML correspondente, tenho estes 2 layouts:
<StackLayout
x:Name="AllowedMessage"
Orientation="Horizontal"
HorizontalOptions="FillAndExpand"
VerticalOptions="End"
IsVisible="{Binding Visitor.valid}">
....
</StackLayout>
<StackLayout
x:Name="DeniedMessage"
Orientation="Horizontal"
HorizontalOptions="FillAndExpand"
VerticalOptions="End"
IsVisible="{Binding Visitor.valid, Converter={StaticResource InvertedBoolConverter}}">
...
</StackLayout>
Consulte IsVisible
a propriedade de ambos os layouts.
O primeiro tem IsVisible="{Binding Visitor.valid}"
e o segundoIsVisible="{Binding Visitor.valid, Converter={StaticResource InvertedBoolConverter}}"
O comportamento deve ser este de acordo com visitor
a propriedade:
- Na inicialização do aplicativo, ambos os layouts devem estar ocultos (
visitor
a propriedade énull
) - Quando em algum momento
visitor
é instanciado evalid
a propriedade étrue
. Neste caso, o primeiro layout deverá ser mostrado. - Finalmente, quando
visitor
for instanciado evalid
a propriedade forfalse
, o segundo layout deverá ser mostrado.
Como posso fazer isso?
Como o valor padrão do tipo bool é
false
, inicialmente, o segundo layout é exibido e o primeiro layout fica oculto.E depois de testar da minha parte, se a
visitor
propriedade fornull
, tanto o primeiro quanto o segundo layout ficarão visíveis primeiro.Para atender às suas necessidades, você pode tentar definir duas variáveis diferentes para os dois layouts.
Você pode seguir as seguintes etapas:
1. adicione duas variáveis
Valid
eValid2
implemente a interfaceINotifyPropertyChanged
para este modeloVisitor
.2.crie um modelo de visualização
MyViewModel.cs
3. Exemplo de uso: