在xamarin Android中,我们"Visibility.Gone;"
隐藏了按钮。在Xamarin表单中,我们有IsVisible="{Binding State}"
,但这只会使视图不可见,空间仍然存在。
请让我知道解决方案。 此致
答案 0 :(得分:0)
在您的视图模型中,您需要具有类似于以下内容的内容:
public bool State{
get {
return _state;
}
set {
_state= value;
RaisePropertyChanged ("State");
}
}
根据发现here的Xamarin文档,该元素应从可视树中删除,不占用任何空间。
修改强>
我不确定你是如何在你的网格上设置Column =“5”的。 Grid没有包含列的属性;但是,我能够使用以下代码生成您要查找的效果。
<Grid BackgroundColor="Gray">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50" />
</Grid.RowDefinitions>
<Grid.Padding>
<OnPlatform x:TypeArguments="Thickness" iOS="0,-3,-20,-3" Android="0, -5, 0, -5" WinPhone="20, 20, 20, 20" />
</Grid.Padding>
<BoxView Color="Blue" Grid.Column="0"></BoxView>
<BoxView Color="Green" Grid.Column="1" IsVisible="{Binding State}"></BoxView>
<BoxView Color="Blue" Grid.Column="2"></BoxView>
<BoxView Color="Green" Grid.Column="3"></BoxView>
</Grid>
<强>详细信息:强>
你是正确的,因为在网格中将标签可见性设置为false将保持分配给网格中控件的空间。你可以做的是设置网格<ColumnDefinition Width="Auto" />
或<RowDefinition Height="Auto" />
并将标签放入该列或行。当可见性设置为false时,这将自动删除为控件分配的空间。下面是您获得的效果(左)以及将定义设置为自动(右)后的效果的屏幕截图。