Учитывая, что у нас есть следующее представление:
<StackPanel>
<TextBlock Text="Some text"/>
<Image Source="{Binding vmImageProp}" Height="10" Visibility="{Binding vmImageVisProp}" />
<StackPanel/>
При запуске, когда ViewModel инициализируется и привязывается к представлению, для vmImageVisProp
устанавливается значение Collapsed.Это правильно, мне не нужно резервировать место для скрытого изображения.
В какой-то момент выполнения приложения логика говорит ВМ сделать изображение видимым.Если я просто установлю свойство vmImageVisProp
на Visible
, моя StackPanel мгновенно изменит размер, создав нежелательный эффект скачка.
Но Я хочу анимировать плавное изменение размера StackPanel , а затем, когда пустое пространство будет готово, изображение появится там.
Я знаю, как создать последовательность анимаций для этого.
Чего я не знаю, так это как обойти неизвестный конечный размер StackPanel.Мне нужно знать это, чтобы сообщить анимации, насколько большим должно быть значение высоты StackPanels.
Я знаю, что высота панелей стека должна увеличиться на 10 (высота появляющегося изображения),но когда я определяю анимацию, мне нужно явно установить результирующую высоту на stackPanel.
Поскольку я должен выполнить анимацию из кода ViewModel, я мог бы рассчитать ее на лету, но я не знаю, как получить высоту StackPanel, поскольку viewModel ничего не знает об этом.
Как правильно анимировать вставку такого изображения?