2017-04-10 91 views
5

Bu yüzden sütunlar içeren bir xaml Izgaram var ve içerik görünmediğinde sütunu gizlemek veya daraltmak istiyorum.İçerik görünmediğinde sütunu veya satırı gizleyin

örnek:

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

Ve dönüştürücü: FirstButton görünür değilken

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

Ben

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

cevap

5

kendim cevaplama Bu bir sonuç istiyorum: Bu düzen bölüm

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

Ve Açıkçası app.xml bölüm

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

yardımcı olur Umut !!