ВПФ:Как постепенно увеличивать и масштабировать пользовательский элемент управления во всплывающем окне
Вопрос
У меня есть пользовательский элемент управления, который я хотел бы показывать, когда пользователь нажимает кнопку.Это не проблема, если использовать элемент управления Popup.
Однако я хотел бы, чтобы пользовательский элемент управления постепенно увеличивался и масштабировался от 0,5 до 1,2 и обратно до 1,0 (как по X, так и по Y) одновременно.
Как мне это сделать?
Решение
Всплывающие окна WPF не прозрачны, поэтому постепенное появление и исчезновение не будет работать.Вы можете установить непрозрачность сколько хотите, но это ничего не изменит.Однако вы можете поиграть с всплывающей подсказкой.Это довольно близко к всплывающему окну.В любом случае, вот что вам нужно для начала:
<UserControl x:Class="WpfApplication1.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<UserControl.Style>
<Style>
<Style.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="00:00:02" From="0" To="1" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<Trigger Property="FrameworkElement.Visibility" Value="Collapsed">
<Setter Property="FrameworkElement.Opacity" Value="0"/>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Style>
<Border x:Name="border" BorderBrush="Blue" BorderThickness="3" CornerRadius="3" Padding="3" Background="Orange"
Width="175" Height="175">
<TextBlock Text="Sample" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
шлепните его куда-нибудь, я использую всплывающую подсказку на той же кнопке, просто для демонстрации:
<Button Click="OnButtonClick" Content="click to see popup">
<Button.ToolTip>
<ToolTip x:Name="popup" IsOpen="False" Background="Transparent" BorderBrush="Transparent"
Placement="Bottom">
<WpfApplication1:UserControl1/>
</ToolTip>
</Button.ToolTip>
</Button>
для кода OnButtonClick я просто переключил всплывающее окно, чтобы можно было щелкнуть его несколько раз:
private void OnButtonClick(object sender, RoutedEventArgs e)
{
popup.IsOpen = !popup.IsOpen;
}
Другие советы
Всплывающие окна WPF могут обрабатывать прозрачность, просто установите следующее
<Popup AllowsTransparency="True" PopupAnimation="Fade">