14、XAML Popup

 

1、Popup Fundamentals:

      基本的 Popup。

      Popup 是一个通过 child 属性承载内容(UIElements )的容器,并且显示在当前窗口的顶部。但是 Popup 本书并不是一个

UIElement 并且没有默认的 visual 模版。它是依靠开发者设置其中的内容。 可以通过设置 Popup 的 HorizontalOffset 和

VerticalOffset 的值 或者 Canvas.Left / Canvas.Top 附加属性明确的放到 窗口上面。设置  Offset 值会使 Popup 参照它的

父容器控件进行偏离。

           设置 Popup 的 IsOpen  属性为 false 或 true 使其进行隐藏和显示。

        <Grid >
//打开 Popup <Button Content="Show Popup (using Offset)" Click="ShowPopupOffsetClicked" />
<Popup VerticalOffset="10" HorizontalOffset="200" x:Name="StandardPopup"> <Border BorderThickness="2" Width="200" Height="200"> <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBlock Text="Simple Popup" FontSize="24.667" HorizontalAlignment="Center" /> // 隐藏 Popup <Button Content="Close" Click="ClosePopupClicked" HorizontalAlignment="Center" /> </StackPanel> </Border> </Popup> </Grid>

 

14、XAML Popup

 

2、Popup as 'Flyout' :

     Popup 控件也可以包含 'flyout' 动画效果,比如在应用中作为一个 AppBar 或者 设置面板的 弹出菜单、弹出输入框等。所有

这些弹出动画,只需要包含一句属性设置 : IsLightDismissEnable 的为 true 即可。

     这个 IsLightDismissedEnabled 属性结合一些 animation 过度可以帮助完成一些特效。并且开发人员有责任把 Popup 控件

跟你准则放到合适的位置。

     1) Show Popup (with light dismiss):

14、XAML Popup

页面的 xaml :

// 控制 Popup 弹出的按钮

 <Button Content="Show Popup (with light dismiss)" 

Click="ShowPopupLightDismissClicked" />



//弹出的 Popup

 <Popup x:Name="LightDismissSimplePopup" HorizontalOffset="200" VerticalOffset="10" 
IsLightDismissEnabled="True"> <Border BorderBrush="{StaticResource ApplicationForegroundThemeBrush}"
BorderThickness="2"
Background="{StaticResource ApplicationPageBackgroundThemeBrush}"
Width="200" Height="200"> <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBlock Text="Simple Popup" FontSize="24.667"
HorizontalAlignment="Center" /> <Button Content="Close" Click="ClosePopupClicked"
HorizontalAlignment="Center" /> </StackPanel> </Border> </Popup>


弹出按钮的 C#  单击事件:

  private void ShowPopupLightDismissClicked(object sender, RoutedEventArgs e)

        {

            if (!LightDismissSimplePopup.IsOpen) { LightDismissSimplePopup.IsOpen = true; }

        }

 

2) Show Popup (with light dismiss and animations) :

      本示例和 1) 中类似,就是在 xaml 中 Popup 控件(LightDismissSimplePopup)增加了 PopupThemeTransition属性,使其弹出时, 有个向上淡入的效果 :

<Popup.ChildTransitions>

                    <TransitionCollection>

                        <PopupThemeTransition />

                    </TransitionCollection>

   </Popup.ChildTransitions>

 

 

3) Show Popup (simulating Settings) :

    这个 Popup 控件和 2) 的区别是增加的 PaneThemeTransition 效果(像设置面板类似, 从窗口右侧滑入) :

//加入到 1) 中的 Popup 中  

<Popup.ChildTransitions>

                    <TransitionCollection>

                        <PaneThemeTransition />

                    </TransitionCollection>

  </Popup.ChildTransitions>

 

并且通过在 按钮单击的事件中,设置其水平方向参照窗口的宽度进行设置, 其按钮单击事件的 C# 代码为:

   private void ShowPopupSettingsClicked(object sender, RoutedEventArgs e)

        {

            if (!SettingsAnimatedPopup.IsOpen) 

            {

                 RootPopupBorder.Width = 646;

                
//
Window.Current.Bounds : 获取应用程序窗口的高度和宽度的值,作为 Rect 值。 SettingsAnimatedPopup.HorizontalOffset = Window.Current.Bounds.Width - 646; SettingsAnimatedPopup.IsOpen = true; } }

 

显示效果:

你可能感兴趣的:(UP)