我有一个模型,它有一个名为 的可观察属性visitor
(这是一个具有名为 的 bool 属性的对象valid
)。
该visitor
属性将null
在执行开始时,但根据某些条件,该属性visitor
将被实例化,并且该valid
属性将被分配true
或false
。
在相应的 XAML 文件中,我有以下 2 种布局:
<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>
请参阅IsVisible
两种布局的属性。
第一个有IsVisible="{Binding Visitor.valid}"
,第二个有IsVisible="{Binding Visitor.valid, Converter={StaticResource InvertedBoolConverter}}"
根据visitor
属性,行为应该是这样的:
- 在应用程序启动时,两个布局都应该隐藏(
visitor
属性是null
) - 当在某个时刻
visitor
被实例化并且valid
属性为true
. 在这种情况下,应显示第一个布局。 - 最后,当
visitor
实例化并且valid
属性为时false
,应该显示第二个布局。
我怎样才能做到这一点?
由于 bool 类型的默认值为
false
,所以最初显示第二个布局,隐藏第一个布局。经过我这边的测试,如果
visitor
属性是null
,第一个和第二个布局首先都会可见。为了实现您的需求,您可以尝试为两种布局定义两个不同的变量。
您可以按照以下步骤操作:
1.添加两个变量
Valid
和Valid2
,并INotifyPropertyChanged
为此模型实现接口Visitor
。2.创建视图模型
MyViewModel.cs
3.使用示例: