2012-06-06 4 views
0

일부 행이있는 격자가 있습니다. 행의 높이는 다음과 같이 창 크기에 상대적으로 설정됩니다내부 내용의 가시성을 기준으로 격자 행 숨기기

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="0.3*" /> 
     <RowDefinition Height="0.2*" /> 
     <RowDefinition Height="0.2*" /> 
     <RowDefinition Height="0.1*" /> <!-- hide this row --> 
     <RowDefinition Height="0.2*" /> 
    </Grid.RowDefinitions> 
</Grid> 

가 지금은 바인더 제본 속성을 기준으로 한 행의 내용을 숨기려. 따라서 콘텐츠 개체의 Visiblity 속성을 Collapsed으로 설정했습니다. 콘텐츠의 Visiblity은 정상적으로 작동하지만 행에는 여전히 원래 공간이 필요합니다.

콘텐츠의 Visiblity가 접힐 때 행을 숨기는 방법이 있습니까? 참고 : HeightRowDefinition에서 Auto으로 설정하지 않으려면 Height을 상대적으로 창 크기로 설정할 수 없으므로 행의 높이가 행 내부의 내용 높이에 맞게 조정됩니다.

답변

1

행의 Height 속성을 바인딩 된 속성에 바인딩 할 수 있습니다.

그런 다음 typeof (바인딩 된 속성)에서 System.Windows.GridLength 로의 변환기 (IValueConverter 구현)가 필요합니다.

아마도

[ValueConversion(typeof(System.Windows.Visibility), typeof(System.Windows.GridLength))] 
public class VisibToHeightConv : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     bool b = (boolean)value; 

     if (b == true) 
      return new System.Windows.GridLength(0, System.Windows.GridUnitType.Star); 
     else 
      return new System.Windows.GridLength(80, System.Windows.GridUnitType.Star); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
+0

바인더 제본 특성과 같은 일이 (컨버터를하여 공개하는 부울로) 표시 여부를 설정하는 단지 부울 값입니다. 행의 높이는 창의 높이에 따라 달라야합니다. –

+0

로우 높이의 컨버터를 살펴보십시오. – Klaus78

+0

괜찮 았는데 - 고마워. –