2012-06-06 3 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 содержимого рухнуло? Примечание. Я не хочу устанавливать Height в RowDefinition на Auto, потому что поэтому я не могу установить Height относительно размера окна, а высота строки регулируется высотой содержимого внутри строки.

ответ

1

Вы можете связать свойство Height строки с привязанным свойством.

Тогда вам понадобится конвертер (реализация IValueConverter) от typeof (привязанное свойство) к System.Windows.GridLength.

Может быть что-то вроде

[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

переплетены свойство только логическое значение, чтобы установить Visiblity (с булевому в visibilty конвертер). Высота строки должна быть в зависимости от высоты окна. –

+0

Посмотрите на конвертер для высоты строки – Klaus78

+0

Это сработало отлично - Спасибо. –

Смежные вопросы