Можно ли неявно анимировать размер элемента с помощью расширений XAML Composition?

Я пытаюсь добиться автоматической анимации изменения размера элементов. Я думаю, что есть некоторое взаимодействие Composition и XAML, которое я не совсем понимаю.

Сначала я попытался использовать расширения XAML из инструментария:

<TextBox x:Name="TextBoxControl" VerticalAlignment="Center" Width="50">
    <animations:Implicit.Animations>
        <animations:Vector3Animation Target="Size" Duration="0:0:0.5"/>
    </animations:Implicit.Animations>
</TextBox>

... и надеялся, что он автоматически оживит TextBox при расширении, чтобы вместить больше текста. Там нет игральных костей. Затем я попытался обернуть TextBox во внешнюю сетку, вместо этого прикрепить неявную анимацию к сетке. Без изменений.

Затем я попытался анимировать размер TextBox Visual вручную:

var visual = ElementCompositionPreview.GetElementVisual(TextBoxControl);
var newSize = new Vector2(visual.Size.X + 20f, visual.Size.Y);
visual.Size = newSize;

Как ни странно, это привело к The Parameter is incorrect исключение при попытке установить новый размер.

Наконец, я попытался изменить TextBox UIElementширина вместо визуальной ширины:

TextBoxControl.Width += 20;

... что тоже не оживило.

Наконец, в отчаянии я попытался оживить SCALE, выполнив то же самое:

XAML

<TextBox x:Name="TextBoxControl" VerticalAlignment="Center" Width="50">
    <animations:Implicit.Animations>
        <animations:Vector3Animation Target="Scale" Duration="0:0:0.5"/>
    </animations:Implicit.Animations>

C#

var visual = ElementCompositionPreview.GetElementVisual(TextBoxControl);
visual.Scale = new Vector3(visual.Scale.X + 0.1f, visual.Scale.Y + 0.1f, visual.Scale.Z);

... который работал именно так, как ожидалось. Когда я запустил код C#, масштаб TextBox увеличился и стал анимированным.

Так есть ли способ добиться автоматической анимации изменения размера элементов интерфейса с помощью неявной анимации?

0 ответов

Другие вопросы по тегам