首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当内容不可见时隐藏列或行

当内容不可见时隐藏列或行
EN

Stack Overflow用户
提问于 2017-04-10 20:33:13
回答 1查看 4.3K关注 0票数 12

因此,我有一个包含列的xaml网格,我想在内容不可见时隐藏或折叠该列。

示例:我有这样的布局:

代码语言:javascript
运行
复制
<Grid >      
    <Button Grid.Column="0" x:Name="FirstButton"  Text="First button" />      
    <Button Grid.Column="1"x:Name="SecondButton"  Text="Second button" />
</Grid>

当FirstButton不可见时,我想要这样的结果

代码语言:javascript
运行
复制
  <Grid >      
    <Button Grid.Column="1"x:Name="SecondButton"  Text="Second button" />
</Grid>
EN

Stack Overflow用户

发布于 2017-04-10 20:36:58

回答我自己:

代码语言:javascript
运行
复制
  <Grid>      
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="{Binding Path=IsVisible, Converter={StaticResource IsVisibleToGridLength}" BindingContext="{x:Reference FirstButton}"   />
        <ColumnDefinition Width="{Binding Path=IsVisible, Converter={StaticResource IsVisibleToGridLength}" BindingContext="{x:Reference SecondButton}" />
  </Grid.ColumnDefinitions>
        
  <Button Grid.Column="0" x:Name="FirstButton"  Text="First button" />      
  <Button Grid.Column="1"x:Name="SecondButton"  Text="Second button" />
</Grid>

而对于转换器部分

代码语言:javascript
运行
复制
class IsVisibleToGridLengthConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo language)
    {
        try
        {
            GridUnitType t = GridUnitType.Star;
            if (parameter != null)
            {
                Enum.TryParse<GridUnitType>((string)parameter, true, out t);                    
            }

            if (value != null)
            {
                bool d = (bool)value;
                return d == false ? new GridLength(0,GridUnitType.Absolute) : new GridLength(1, t);
            }
            return null;
        }
        catch (Exception exp)
        {                
            return null;
        }
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo language)
    {
        return null;
    }
}

显然还有App.xml部分

代码语言:javascript
运行
复制
<Application  x:Class="MyNameSpace.App"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:class="clr-namespace:MyNameSpace.Class;assembly=MyNameSpace"/>
<Application.Resources>
  <ResourceDictionary>     
    <class:IsVisibleToGridLengthConverter  x:Key="IsVisibleToGridLength"/>   
  </ResourceDictionary>
</Application.Resources>
</Application>

希望它能有所帮助!!

票数 16
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43323262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档