WPF: Проблема с DesiredHeight у Expander при XAML-анимации

Приветствую коллег!
Знающие люди, подскажите пожалуйста, как решить проблемку.
Есть простой Expander, в нем Grid с полями. К Expander прикручена анимация на развертывание, чтобы он плавно выпадал. Она работает, если явно указать к какой высоте ему стремиться (To=«300»), но если пытаться использовать DesiredHeight, то MS VS сильно ругается, т.к. ей не удается отрисовать форму с этим Expander.

Вот собственно XAML

<Expander Header="Реквизиты юридического лица" HorizontalAlignment="Stretch" Margin="10" Name="Expander1" VerticalAlignment="Top" ExpandDirection="Down" >
                    <Expander.Content>
                        <Grid Height="128">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="170*" />
                            <ColumnDefinition Width="331*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="32" />
                            <RowDefinition Height="32" />
                            <RowDefinition Height="32" />
                            <RowDefinition Height="32" />
                        </Grid.RowDefinitions>
                        <Label Grid.Row="0" Grid.Column="0" Name="Label7" HorizontalAlignment="Right" Margin="5,0,0,5">Название орг.</Label>
                        <TextBox Grid.Row="0" Grid.Column="1" Name="TextBox7" Margin="5" />
                        <Label Grid.Row="1" Grid.Column="0" Name="Label3" HorizontalAlignment="Right" Margin="5,0,0,5">ИНН</Label>
                        <TextBox Grid.Row="1" Grid.Column="1" Name="TextBox3" Margin="5" />
                        <Label Grid.Row="2" Grid.Column="0" Name="Label4" HorizontalAlignment="Right" Margin="5,0,0,5">КПП</Label>
                        <TextBox Grid.Row="2" Grid.Column="1" Name="TextBox4" Margin="5" />
                        <Label Grid.Row="3" Grid.Column="0" Name="Label5" HorizontalAlignment="Right" Margin="5,0,0,5">Адрес</Label>
                        <TextBox Grid.Row="3" Grid.Column="1" Name="TextBox5" Margin="5" />
                    </Grid></Expander.Content>
                    <Expander.Style>
                        <Style>
                            <Style.Triggers>
                                <Trigger Property="Expander.IsExpanded" Value="True">
                                    <Trigger.EnterActions>
                                        <BeginStoryboard>
                                            <Storyboard>
                                                <DoubleAnimation From="0" To="{Binding ElementName=Content, Path=DesiredHeight}" Duration="0:0:0.2" Storyboard.TargetProperty="Content.Height" />
                                            </Storyboard>
                                        </BeginStoryboard>
                                    </Trigger.EnterActions>
                                </Trigger>
                            </Style.Triggers>
                        </Style>
                    </Expander.Style>
                </Expander>
  • Вопрос задан
  • 6756 просмотров
Решения вопроса 1
NikitaTratorov
@NikitaTratorov Автор вопроса
CTO
Есть маленькая победа в решении данной проблемы.
Оказывается, если ты не знаешь куда тебе стремиться в анимации, достаточно указать начальное значение (From).
Другими словами, запись:
<DoubleAnimation From=«0» Duration=«0:0:0.2» Storyboard.TargetProperty=«Content.Height» />

работает! Expamder плавно разворачивается до какого-то своего, одному ему известного значения.

Теперь другая проблема — также плавно его свернуть. Я попробовал добавить логичный способ (To):
<Trigger.ExitActions>
<DoubleAnimation To=«0» Duration=«0:0:0.2» Storyboard.TargetProperty=«Content.Height» />


</Trigger.ExitActions>

но не преуспел. Анимации нет. У кого-нибудь есть мысли?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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