Xaml 如何将设置动画设置为禁用

Xaml 如何将设置动画设置为禁用,xaml,windows-store-apps,winrt-xaml,windows-8.1,Xaml,Windows Store Apps,Winrt Xaml,Windows 8.1,在Windows 8.1中,我正在使用新的设置fLyout控件。如果使用控件的内置“后退”按钮返回到“设置”弹出按钮,弹出按钮将正确地设置动画,并将设置动画。但是,如果通过在弹出型按钮外部单击灯光关闭,它将消失,而不显示过渡动画 当灯光关闭设置时,如何设置向外过渡的动画?(我不想返回到“设置魅力”弹出按钮,我只想让它在灯光熄灭时滑出。)您需要使用HideEdgeUI动画 请阅读以下内容: Matt,您想做的应该很容易实现,但XAML设置SPLYOUT API目前不支持。正如Jerry指出的,有一

在Windows 8.1中,我正在使用新的设置fLyout控件。如果使用控件的内置“后退”按钮返回到“设置”弹出按钮,弹出按钮将正确地设置动画,并将设置动画。但是,如果通过在弹出型按钮外部单击灯光关闭,它将消失,而不显示过渡动画


当灯光关闭设置时,如何设置向外过渡的动画?(我不想返回到“设置魅力”弹出按钮,我只想让它在灯光熄灭时滑出。)

您需要使用HideEdgeUI动画

请阅读以下内容:


Matt,您想做的应该很容易实现,但XAML设置SPLYOUT API目前不支持。正如Jerry指出的,有一些过渡允许动画输出效果(在您想要的XAML中)。不幸的是,没有API支持SettingsFlyout来添加此转换,但是您可以使用自己的专用弹出窗口来托管SettingsFlyout(下面有更多关于此的内容):

公共密封部分类设置fLYOUT1:设置fLYOUT
{
弹出窗口;
边界(b);
公共设置FlyOut1()
{
this.InitializeComponent();
BackClick+=设置Lyout1\u BackClick;
卸载+=设置fLyout1\u卸载;
抽头+=设置Lyout1_抽头;
}
无效设置fLyout1\u反单击(对象发送者,反单击事件参数e)
{
_b、 Child=null;
设置spane.Show();
}
无效设置Flyout1\u已卸载(对象发送器,路由目标e)
{
如果(_p!=null)
{
_p、 IsOpen=假;
}
}
无效设置Flyout1_点击(对象发送器,点击路由数据源e)
{
e、 已处理=正确;
}
public void ShowCustom()
{
_p=新弹出窗口();
_b=新边界();
_b、 ChildTransitions=新的TransitionCollection();
//TODO:如果您支持从右到左的构建,请确保测试RTL操作系统的所有组合
//XAML app.EdgeTransitionLocation.left的系统构建(左侧的charms)和RTL流方向
//可能需要用于RTL(和水平对齐。在下面的设置左侧)。
_b、 添加(新的EdgeUitheMetransformation(){Edge=EdgeTransitionLocation.Right});
_b、 背景=新的SolidColorBrush(颜色:透明);
_b、 宽度=Window.Current.Bounds.Width;
_b、 高度=Window.Current.Bounds.Height;
_b、 抽头+=b_抽头;
this.HorizontalAlignment=HorizontalAlignment.Right;
_b、 孩子=这个;
_p、 儿童=_b;
_p、 IsOpen=真;
}
无效b_分接(对象发送器,分接路由数据源e)
{
边框b=(边框)发送方;
b、 Child=null;
}
}
此示例的完整解决方案:


我认为setingsflyout应该为您的场景提供API支持,所以我在XAML团队中提交了一个工作项。将来,此类请求/问题也可以在MSDN论坛上提出(由MSFT人员主持)。此处的限制是,SettingsFlyout在弹出窗口顶部使用IsLightDismissEnabled=“True”实现,并且light Dismission事件当前立即关闭弹出窗口,而不允许运行卸载子转换。我认为这是可以克服的,可以在SettingsFlyout API级别支持转换,以支持您的场景。

这非常有效。刚刚在设置窗体本身上添加了一个点击事件,e.Handled=true,这样我就可以点击弹出按钮而不必关闭它。非常感谢。很高兴听到!谢谢-我更新了代码(上面和github上),添加了您关于设置Lyout处理的评论。感谢这个示例,它非常有用和简洁!有一件事,我注意到当你按下后退按钮时,弹出按钮在设置窗格显示之前不会消失。我还没有弄清楚如何设置动画,但是如果你想简单地摆脱它,你可以修改BackClick处理程序,使其包含:{if(_p!=null){u p.IsOpen=false;}SettingsPane.Show();}谢谢Yashar!我很高兴你发现这个样品很有用。我更新了上面和Github上的代码,以反映您的反馈。是的,我认为BackClick处理程序需要将边框的子对象设置为null,以强制卸载转换在setingsflyout上运行,从而使其具有动画效果。谢谢@PatrickFinnigan。这很有帮助。它无缝地工作。但是,我在下面的一行中得到了一个错误this.InitializeComponent();此错误为“SettingsFlyout1”不包含“InitializeComponent”的定义,并且找不到接受“SettingsFlyout1”类型的第一个参数的扩展方法“InitializeComponent”(是否缺少using指令或程序集引用)?我是否做错了什么?这在C#/XAML中也受支持,还是仅在JS中受支持?