Xaml 如何更改ContentDialog转换?

Xaml 如何更改ContentDialog转换?,xaml,windows-phone-8.1,Xaml,Windows Phone 8.1,WindowsPhone8.1为对话框和弹出型按钮引入了一种新的转换,看起来像一个。我不喜欢这样;我更喜欢它在WindowsPhone8中的外观,在那里它有点旋转/倾斜。有没有办法改变这一点 我试过这样的方法: <ContentDialog.Transitions> <TransitionCollection> </TransitionCollection> </ContentDialog.Transitions> 但是它不会

WindowsPhone8.1为对话框和弹出型按钮引入了一种新的转换,看起来像一个。我不喜欢这样;我更喜欢它在WindowsPhone8中的外观,在那里它有点旋转/倾斜。有没有办法改变这一点

我试过这样的方法:

<ContentDialog.Transitions>
    <TransitionCollection>
    </TransitionCollection>
</ContentDialog.Transitions>


但是它不会改变转换。

您不能覆盖ContentDialog等中的转换。它们被设计为获得标准行为的简单方法,并且将始终使用PopupThemeTransition

如果您想要非标准行为,那么您可以编写一个自定义控件,该控件使用您自己的TransitionCollection。我找不到这方面的任何现有样本,但请查看Callisto的CustomDialog了解一般概念。它模仿Windows MessageDialog,在全屏调光窗口上方的水平居中条中显示内容,但移动UI以匹配Windows Phone的顶部固定面板并不困难

一旦你在自己的控制下,你可以使用任何你喜欢的转换。我手头没有WP8设备来查看转换是什么,但是带有Edge=“Left”的PaneThemeTransition听起来与您的描述相符。如果没有,那么一旦开始转换,您可以将其替换为您喜欢的转换,或者删除所有转换并应用您自己的故事板动画。我要么坚持对用户有意义的标准转换,要么进行完全定制,因为主题转换可能会再次改变

创建一个看起来正确的面板非常容易。棘手的部分是如何显示控件。如果您将它包含在Xaml中,因此它是可视化树的一部分,那么您可以直接显示它。如果它不在可视化树中,那么您需要将其添加到可视化树中,或者将其托管在弹出窗口中

这是一个快速而肮脏的用户控件,它在弹出窗口中承载自己,并使用PaneThemeTransition从右侧滑入


乱数假文

使用系统;
使用System.Collections.Generic;
使用System.IO;
使用System.Linq;
使用System.Runtime.InteropServices.WindowsRuntime;
使用Windows基金会;
使用Windows。
使用Windows.Phone.UI.Input;
使用Windows.UI.Xaml;
使用Windows.UI.Xaml.Controls;
使用Windows.UI.Xaml.Controls.Primitives;
使用Windows.UI.Xaml.Data;
使用Windows.UI.Xaml.Input;
使用Windows.UI.Xaml.Media;
使用Windows.UI.Xaml.Navigation;
//用户控制项模板记录在http://go.microsoft.com/fwlink/?LinkId=234236
名称空间App199
{
公共密封部分类MyUserControl1:UserControl
{
弹出主机弹出;
公共MyUserControl1()
{
this.InitializeComponent();
hostPopup=newpopup();
hostPopup.Child=this;
已加载+=MyUserControl1\u已加载;
已卸载+=MyUserControl1\u已卸载;
}
已加载void MyUserControl1_(对象发送方,路由目标)
{
HardwareButtons.BackPressed+=HardwareButtons\u BackPressed;
}
void MyUserControl1_已卸载(对象发送方,RoutedEventArgs e)
{
HardwareButtons.BackPressed-=HardwareButtons\u BackPressed;
}   
公开展览(
{
this.Height=Window.Current.Bounds.Height;
this.Width=Window.Current.Bounds.Width;
var occRect=Windows.UI.ViewManagement.StatusBar.GetForCurrentView().OccludedRect;
statusBarRow.Height=新网格长度(occRect.Height);
hostPopup.IsOpen=true;
}
无效硬件按钮\u反压(对象发送器,反压Eventargs e)
{
if(hostPopup.IsOpen)
{ 
hostPopup.IsOpen=false;
e、 已处理=正确;
}
}
私有void UserControl_PointerReleased(对象发送方,PointerRoutedEventArgs e)
{
hostPopup.IsOpen=false;
}
}
}

您是指MessageBox显示/隐藏动画吗?显示/隐藏动画是我想要的
弹出按钮
s和
ContentDialog
s的动画。以防万一,您在这里看过了吗:都很好。但是您失去了ContentDialog提供的模态对话框的真正本质。您需要禁用与下面的框架/页面的任何可能的交互。仅仅全屏覆盖并不能解决这个问题。此外,ContentDialog可以更好地处理硬件BackButton。使用弹出窗口,您必须自己处理它。这可能会变得混乱,这取决于对话框和页面之间的注册顺序。所有这些只是为了移除这个愚蠢的动画。