Показать / Скрыть строку сетки на основе свойства? - PullRequest
1 голос
/ 11 июля 2009

У меня есть сетка из нескольких строк. Я хочу, чтобы скрыть / показать одну из этих строк на основе свойства. Это возможно?

В моем случае у меня есть две строки сетки. Один имеет сетку свойств, а другой - список. Окно списка связано с объектом, а элементы списка связаны с массивом внутри этого объекта. Я хочу скрыть строку (включая список), когда массив пуст. Поэтому, когда массив моего объекта пуст, вы должны просто увидеть окно с сеткой свойств и ничего больше.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 11 июля 2009

Да. Свяжите свойство Visibility ListBox с объектом, который содержит массив. Затем примените пользовательский преобразователь значений, который будет смотреть на массив и проверять, пустой ли он. Если он пуст, вернуть Visibility.Collapsed. В противном случае верните Visibility.Visible. Затем убедитесь, что у вашего RowDefinition есть высота Auto, и он автоматически уменьшится до нуля при свертывании ListBox.

Ваш конвертер значений будет выглядеть примерно так:

public class EmptyVisiblityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        YourObject yourObject = value as YourObject;
        return yourObject.YourArray.Count > 0 ? Visibility.Visible : Visibility.Hidden;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return null;
    }
}

И ваш XAML должен выглядеть примерно так:

<Window.Resources>
    <local:EmptyVisiblityConverter x:Key="emptyVisibilityConverter"/>
</Window.Resources>
...
<ListBox Visibility="{Binding Path=YourObject, Converter={StaticResource emptyVisibilityConverter}}"/>
2 голосов
/ 11 июля 2011

вот решение только для xaml

 <ListBox Name="MyListBox" MinHeight="200">
  <ListBox.Style>
    <Style>
      <Style.Triggers>
        <DataTrigger Binding="{Binding ElementName=MyListBox, Path=Items.Count}" Value="0">
          <Setter Property="ListBox.Visibility" Value="Collapsed"/>
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </ListBox.Style>
</ListBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...