Как можно ограничить высоту строки сетки в wpf - PullRequest
0 голосов
/ 10 января 2010

Я разрабатываю надстройку для Outlook в WPF. Надстройка Outlook является UserControl. Мой упрощенный внешний вид кода XAML:

<UserControl>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="150"/>
                <RowDefinition Height="*"/>
                <RowDefinition Height="20"/>
            </Grid.RowDefinitions>
            <TextBlock Grid.Row="0">Header</TextBlock>
            <ListBox Grid.Row="1"></ListBox>
            <Button Grid.Row="2"></Button>
        </Grid>
    </UserControl>

Элементы списка загружаются динамически. С помощью этого класса, который я основал здесь http://www.codeproject.com/KB/WPF/GridLengthAnimation.aspx, высота 3-го ряда устанавливается равной 0,4 * при нажатии кнопки.

Проблема в том, что, когда у меня есть больше элементов в списке, вторая строка расширяется, а 3-я строка исчезает. Решение может быть, если я установлю MaxHeight второй строки на 100% высота-170, но не знаю доступную высоту для UserControl.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 11 января 2010

Проблема была здесь (в библиотеке, которую я использовал)

 public override object GetCurrentValue(object defaultOriginValue,
        object defaultDestinationValue, AnimationClock animationClock)
    {
        double fromVal = ((GridLength)GetValue(GridLengthAnimation.FromProperty)).Value;
        double toVal = ((GridLength)GetValue(GridLengthAnimation.ToProperty)).Value;

        if (fromVal > toVal)
        {
            return new GridLength((1 - animationClock.CurrentProgress.Value) * (fromVal - toVal) + toVal, GridUnitType.Pixel);
        }
        else
            return new GridLength(animationClock.CurrentProgress.Value * (toVal - fromVal) + fromVal, GridUnitType.Pixel);
    }

Я заменил GridUnitType.Star на GridUnitType.Pixel. И теперь все отлично работает

0 голосов
/ 10 января 2010

Вместо указания Height попробуйте указать MinHeight для 3-го ряда, чтобы он не уменьшался до определенного размера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...