Как связать Listview MaxHeight с текущей высотой окон?

Как связать Listview MaxHeight с текущей высотой окон?

Я хотел бы ограничить высоту скажем, 3/4 высоты окон.

Как я могу сделать это?

6
задан wpfbeginner 18 March 2010 в 08:40
поделиться

2 ответа

Другой подход (без конвертера) - просто поместить его в сетку размером со звезду. Конечно, это накладывает некоторые ограничения на ваш макет. Таким образом, это зависит от другого контента, можно ли использовать этот подход или нет.

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="0.75*"/>
        <RowDefinition Height="0.25*"/>
    </Grid.RowDefinitions>

    <ListView Grid.Row="0" VerticalAlignment="Top"/>
    <!-- some other content -->

</Grid>

Поскольку вы хотели указать MaxHeight ListView, я установил для VerticalAlignment значение Top , чтобы не использовать все доступное пространство. если это не нужно. Конечно, вы также можете установить это значение на Bottom или Stretch , в зависимости от ваших требований.

3
ответ дан 17 December 2019 в 07:03
поделиться

Вы можете использовать конвертер для вычисления высоты на основе высоты окна, что-то вроде этого ...

Вам нужно передать Window.ActualHeight в конвертер - тогда он вернет высоту окна, умноженную на 0,75. Если по какой-либо причине при срабатывании преобразователя Window.ActualHeight имеет значение null (или вы случайно передали что-то, что не может быть преобразовано в double), он вернет double.NaN, который установит высоту равной Авто.

public class ControlHeightConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter,
                           System.Globalization.CultureInfo culture)
    {
        double height = value as double;

        if(value != null)
        {
            return value * 0.75;
        }
        else
        {
            return double.NaN;
        }
    }
}

Привяжите это к своему элементу управления вот так ... (очевидно, это очень урезанная версия xaml!)

<Window x:Name="MyWindow"
  xmlns:converters="clr-namespace:NamespaceWhereConvertersAreHeld">
  <Window.Resources>
    <ResourceDictionary>
      <converters:ControlHeightConverter x:Key="ControlHeightConverter"/>
    </ResourceDictionary>
  </Window.Resources>

  <ListView MaxHeight="{Binding 
        ElementName=MyWindow, Path=ActualHeight, 
        Converter={StaticResource ControlHeightConverter}}"/>
</Window>    
1
ответ дан 17 December 2019 в 07:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: