- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 Windows Phone 8.1 silverlight 应用程序,我想在我的页面之间提供简单的导航转换。
我在 Nuget 上找到了 Windows Phone 工具包。不幸的是,过渡服务的导航过渡不起作用。我究竟做错了什么? (我使用 Caliburn Micro 作为 mvvm 框架)
Bootstrapper.cs
public sealed class Bootstrapper : PhoneBootstrapperBase
{
public PhoneContainer Container { get; set; }
public Bootstrapper()
{
StartRuntime();
}
protected override void Configure()
{
Container = new PhoneContainer();
Container.RegisterPhoneServices(RootFrame);
Container.Singleton<MainViewModel>()
AddCustomConventions();
}
static void AddCustomConventions()
{
//ellided
}
protected override object GetInstance(Type service, string key)
{
return Container.GetInstance(service, key);
}
protected override IEnumerable<object> GetAllInstances(Type service)
{
return Container.GetAllInstances(service);
}
protected override void BuildUp(object instance)
{
Container.BuildUp(instance);
}
protected override PhoneApplicationFrame CreatePhoneApplicationFrame()
{
return new TransitionFrame();
}
}
MainView.xaml
...
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
...
<Grid x:Name="LayoutRoot">
<toolkit:TransitionService.NavigationInTransition>
<toolkit:NavigationInTransition>
<toolkit:NavigationInTransition.Backward>
<toolkit:TurnstileTransition Mode="BackwardIn"/>
</toolkit:NavigationInTransition.Backward>
<toolkit:NavigationInTransition.Forward>
<toolkit:TurnstileTransition Mode="ForwardIn"/>
</toolkit:NavigationInTransition.Forward>
</toolkit:NavigationInTransition>
</toolkit:TransitionService.NavigationInTransition>
<toolkit:TransitionService.NavigationOutTransition>
<toolkit:NavigationOutTransition>
<toolkit:NavigationOutTransition.Backward>
<toolkit:TurnstileTransition Mode="BackwardOut"/>
</toolkit:NavigationOutTransition.Backward>
<toolkit:NavigationOutTransition.Forward>
<toolkit:TurnstileTransition Mode="ForwardOut"/>
</toolkit:NavigationOutTransition.Forward>
</toolkit:NavigationOutTransition>
</toolkit:TransitionService.NavigationOutTransition>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
...
</Grid>
App.xaml.cs
public sealed partial class App : Application
{
public static PhoneApplicationFrame RootFrame { get; private set; }
public App()
{
InitializeComponent();
if (!Debugger.IsAttached) return;
Application.Current.Host.Settings.EnableFrameRateCounter = false;
PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
}
}
或者,在 Windows Phone SL 8.1 应用程序中提供导航转换的其他方法是什么?
最佳答案
这是我的做法(从各种来源拼凑而成,我现在不太记得了):
创建一个名为 Transitions 之类的带有过渡的类(您不必添加所有过渡,只需添加您需要的):
//Turnstile transition
public static void UseTurnstileTransition(UIElement element)
{
TransitionService.SetNavigationInTransition(element,
new NavigationInTransition()
{
Backward = new TurnstileTransition()
{
Mode = TurnstileTransitionMode.BackwardIn
},
Forward = new TurnstileTransition()
{
Mode = TurnstileTransitionMode.ForwardIn
}
}
);
TransitionService.SetNavigationOutTransition(element,
new NavigationOutTransition()
{
Backward = new TurnstileTransition()
{
Mode = TurnstileTransitionMode.BackwardOut
},
Forward = new TurnstileTransition()
{
Mode = TurnstileTransitionMode.ForwardOut
}
}
);
}
//Slide transition
public static void UseSlideTransition(UIElement element)
{
TransitionService.SetNavigationInTransition(element,
new NavigationInTransition()
{
Backward = new SlideTransition()
{
Mode = SlideTransitionMode.SlideRightFadeIn
},
Forward = new SlideTransition()
{
Mode = SlideTransitionMode.SlideLeftFadeIn
}
}
);
TransitionService.SetNavigationOutTransition(element,
new NavigationOutTransition()
{
Backward = new SlideTransition()
{
Mode = SlideTransitionMode.SlideRightFadeOut
},
Forward = new SlideTransition()
{
Mode = SlideTransitionMode.SlideLeftFadeOut
}
}
);
}
//Slide up/down transition
public static void UseSlideUpDownTransition(UIElement element)
{
TransitionService.SetNavigationInTransition(element,
new NavigationInTransition()
{
Backward = new SlideTransition()
{
Mode = SlideTransitionMode.SlideUpFadeIn
},
Forward = new SlideTransition()
{
Mode = SlideTransitionMode.SlideDownFadeIn
}
}
);
TransitionService.SetNavigationOutTransition(element,
new NavigationOutTransition()
{
Backward = new SlideTransition()
{
Mode = SlideTransitionMode.SlideUpFadeOut
},
Forward = new SlideTransition()
{
Mode = SlideTransitionMode.SlideDownFadeOut
}
}
);
}
//Swivel transition
public static void UseSwivelTransition(UIElement element)
{
TransitionService.SetNavigationInTransition(element,
new NavigationInTransition()
{
Backward = new SwivelTransition()
{
Mode = SwivelTransitionMode.BackwardIn
},
Forward = new SwivelTransition()
{
Mode = SwivelTransitionMode.ForwardIn
}
}
);
TransitionService.SetNavigationOutTransition(element,
new NavigationOutTransition()
{
Backward = new SwivelTransition()
{
Mode = SwivelTransitionMode.BackwardOut
},
Forward = new SwivelTransition()
{
Mode = SwivelTransitionMode.ForwardOut
}
}
);
}
//Rotate transition
public static void UseRotateTransition(UIElement element)
{
TransitionService.SetNavigationInTransition(element,
new NavigationInTransition()
{
Backward = new RotateTransition()
{
Mode = RotateTransitionMode.In90Clockwise
},
Forward = new RotateTransition()
{
Mode = RotateTransitionMode.In180Clockwise
}
}
);
TransitionService.SetNavigationOutTransition(element,
new NavigationOutTransition()
{
Backward = new RotateTransition()
{
Mode = RotateTransitionMode.Out180Counterclockwise
},
Forward = new RotateTransition()
{
Mode = RotateTransitionMode.Out90Counterclockwise
}
}
);
}
//Roll transition (doesn't have any modes)
public static void UseRollTransition(UIElement element)
{
TransitionService.SetNavigationInTransition(element,
new NavigationInTransition()
{
Backward = new RollTransition()
{
//Mode = RollTransitionMode.In90Clockwise
},
Forward = new RollTransition()
{
//Mode = RollTransitionMode.In180Clockwise
}
}
);
TransitionService.SetNavigationOutTransition(element,
new NavigationOutTransition()
{
Backward = new RotateTransition()
{
//Mode = RotateTransitionMode.Out180Counterclockwise
},
Forward = new RotateTransition()
{
//Mode = RotateTransitionMode.Out90Counterclockwise
}
}
);
}
2) 在所有要应用转换的页面的页面构造函数中添加要使用的转换:
public MainPage()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainPage_Loaded);
//Setup page transitions using custom class file
//1. Turnstile transition
Transitions.UseTurnstileTransition(this);
//2. Slide transition
//Transitions.UseSlideTransition(this);
//3. Slide up/down transition
//Transitions.UseSlideUpDownTransition(this);
//4. Swivel transition
//Transitions.UseSwivelTransition(this);
//5. Rotate transition
//Transitions.UseRotateTransition(this);
//6. Roll transition
//Transitions.UseRollTransition(this);
}
3) 最后,您需要将 App.xaml.cs 中的 RootFrame 从 PhoneApplicationFrame 更改为 TransitionFrame:
//RootFrame = new PhoneApplicationFrame();
RootFrame = new TransitionFrame();
在那之后,您的正常页面转换应该更改为您在页面构造器中选择的任何一个 - 通过将它们全部注释在那里,您可以尝试不同的。刚刚在一个空白的应用程序中进行了尝试,它成功了 - 希望它能有所帮助。
关于c# - 导航转换 - Windows Phone 工具包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26089007/
我开发了一个使用 mspn 服务的 windows phone 应用程序。它在 Windows 手机模拟器上运行良好。现在我想在 Windows Phone 设备中测试它。我有一个 Windows P
我正在考虑针对 Windows Phone 7 进行开发。为了测试我的应用程序,我需要能够模拟电话调用。在模拟器中可以吗? 最佳答案 不,不可能模拟您的应用程序被接收到的电话中断。还宣布为 the R
我看到 Windows Phone 8 支持 Windows Phone 7 应用程序。我在 Windows Phone 7 上开发了一些应用程序,我想在 Windows Phone 8 模拟器上运行
我正在Windows 8上使用Visual Studio2013。我有三个Windows Phone设备,lumia 620、920、1320,这些都是开发人员解锁的设备。 620设备已安装Windo
非常直接的问题。我的公司开发了一个 windows phone 7 应用程序,并一直在 windows phone 7 设备上对其进行测试。我们能否安全地假设同一个应用程序将向后兼容并在 Window
标题几乎概括了它。我已经编写了一个 Windows Phone 7 应用程序,现在我想将它部署到 Windows Phone 8 设备 (HTC Windows Phone 8X)。我已经注册并解锁了
我一直在开发 Windows Phone 8 应用程序,现在我想将其更改为 Windows Phone 8.1。我该怎么做? 是否应该创建一个新的 Windows Phone 8.1 应用并将所有现有
我有一个针对 Windows Phone 8 的应用程序。现在我想使用 this compression library其中指出: Supported Platforms: .NET Framewor
有什么区别Windows Phone 7.1 (NoDo) 和 Windows Phone 7.5 (芒果) ? 我已经为 Mango 安装了 SDK,但是当我尝试创建一个项目时,它显示为 7.1 版
我最近更新了我的 Visual Studio 2013,现在它允许开发 Windows Phone 8.1 应用程序。 但是现在,当我创建一个 Windows Phone 项目时,它是针对 WP 8.
我最近购买了 Lumia 630 双 SIM 卡,并一直在尝试注册我的手机以进行开发,但一直收到此错误“无法连接到手机。请确保通过 USB 传输服务的 Windows Phone IP 正在运行”。
我正在尝试使用 documentation from MSDN 在我现有的 Windows Phone OS 7.1 应用程序中支持新的 Windows Phone 磁贴功能。 .但是,我似乎无法通过
我在搜索如何启动Windows Phone 10模拟器时迷路了。 我已经做了: 我下载并安装了仿真器镜像(我知道flash.vhd文件的位置) 我正在运行Windows 8.1 x64专业版。 Hyp
我想制作像图片一样的动态磁贴。我该怎么做? 最佳答案 上面创建的图 block 很可能是在服务器端创建的。据说 Windows Phone 7.1 和 Windows Phone 8 之间发生了很多变
我刚刚将它安装在我的 Windows 8 上。它不是在 VM 上运行,而是在带有 bootcamp 的 macbook 上运行。 当我尝试模拟我的应用程序时,出现第一个错误: 但是后来我单击“重试”并
Microsoft 刚刚发布了结合了 Windows 8.1 和 Windows Phone 8.1 的 Windows App 8.1,因此您可以创建一个通用的应用程序。但是,将 Microsoft
是否有可用于WP7的日历控件(不是日期选择器和时间选择器)? 最佳答案 我还在CodePlex上启动了新项目。我刚刚研究了日历控件的Alpha版本。 http://wpcontrols.codeple
我在XAML中有一个文本框: .cs文件声明了以下事件: private void blah_OnKeyDown(object sender, KeyEventArgs e) {
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
我正在为Windows Phone 7创建一个多人游戏。如何调试模拟器的多个实例以便对其进行调试? 最佳答案 实际上,您可以同时运行Windows Phone 7模拟器的多个实例,甚至可以同时调试它们
我是一名优秀的程序员,十分优秀!