2017-04-10 20 views
5

xamlグリッドに列があるため、コンテンツが表示されていないときに列を非表示または折りたたんでいます。コンテンツが表示されていないときに列または行を非表示にする

例: 私はこのレイアウトを持っている:

<Grid >  
    <Button Grid.Column="0" x:Name="FirstButton" Text="First button" />  
    <Button Grid.Column="1"x:Name="SecondButton" Text="Second button" /> 
</Grid> 

FirstButtonは、私は自分自身に答える

<Grid >  
    <Button Grid.Column="1"x:Name="SecondButton" Text="Second button" /> 
</Grid> 

答えて

5

この結果を望んで表示されていない場合は:

<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> 

そして、コンバータ用を一部

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部分

<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> 

それが役に立てば幸い!

関連する問題