我想按下按钮

时间:2017-03-13 10:17:01

标签: xamarin.android xamarin.forms

在xamarin Android中,我们"Visibility.Gone;"隐藏了按钮。在Xamarin表单中,我们有IsVisible="{Binding State}",但这只会使视图不可见,空间仍然存在。

请让我知道解决方案。 此致

1 个答案:

答案 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时,这将自动删除为控件分配的空间。下面是您获得的效果(左)以及将定义设置为自动(右)后的效果的屏幕截图。 enter image description here