У меня есть текстовое поле, расположенное поверх ComboBox. TextBox становится выше (с помощью анимации), когда получает фокус, и сжимается, когда теряет фокус.
Проблемы начинаются, когда TextBox теряет фокус в ComboBox. Когда это происходит, всплывающее окно выбора (часть, которая «опускается») появляется чуть ниже ComboBox, как и ожидалось, но когда ComboBox начинает двигаться вверх (поскольку текстовое поле выше теперь сжимается), всплывающее окно выбора не следует за ним, и теперь кажется отделенным от ComboBox.
Предположительно это связано с тем, что выбранный элемент Popup (как и все Popups) не является частью того же визуального дерева, что и TextBox и ComboBox, поэтому его макет не пересчитывается в процессе анимации.
Как сохранить целостность ComboBox?
Ниже приведен фрагмент, который вы можете вставить в XamlPad, чтобы воспроизвести это. Любая помощь высоко ценится!
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<StackPanel Width="100" Orientation="Vertical">
<TextBox Height="19">
<TextBox.Triggers>
<EventTrigger RoutedEvent="UIElement.GotFocus">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard TargetProperty="Height">
<DoubleAnimation From="19" To="100" Duration="0:0:0.2"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="UIElement.LostFocus">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard TargetProperty="Height">
<DoubleAnimation From="100" To="19" Duration="0:0:0.2"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</TextBox.Triggers>
</TextBox>
<ComboBox>
<ComboBoxItem>Item 1</ComboBoxItem>
<ComboBoxItem>Item 2</ComboBoxItem>
</ComboBox>
</StackPanel>
</Page>
Это также было опубликовано как ошибка на сайте Microsoft Connect:
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=422254