0

基本上,我所拥有的是一个解决方案,其中包含两个针对 Windows Phone 7 和 Windows Phone 8 的项目。我已将 WP7 项目中的页面和类链接到 WP8 项目(添加为链接),每个项目也包含两个单独的页面TestPage.xamlTestPageWP8.xaml.

在 WP8 项目中,我添加了额外的Conditional compilation symbols WP8。所以在我的 MainPage 我有类似的东西:

        private void onButtonClick(object sender, RoutedEventArgs e)
        {
#if WP8
            NavigationService.Navigate(new Uri("/TestPageWP8.xaml", UriKind.Relative));
#else
            NavigationService.Navigate(new Uri("/TestPage.xaml", UriKind.Relative));
#endif   
        }

问题是我无法打开TestPageWP8,应用程序总是打开TestPage

我的启动项目是 WP7,我有诺基亚 Lumia 920 和 610。我缺少一些东西,但是什么?

谢谢!

4

4 回答 4

1

如果您将 WP7 版本作为启动项目,则此解决方案中未定义“WP8”编译符号,您将导航到 TestPage.xaml。
如果要导航到 TestPageWP8.xaml,则需要将 WP8 项目设置为启动项目。
还要确保在您的 WP8 项目中实际定义了编译符号 WP8 - 右键单击​​项目,转到“属性”并检查“构建”选项卡,如果 WP8 定义在“SILVERLIGHT;WINDOWS_PHONE”符号旁边。

于 2013-11-14T18:27:42.307 回答
1

试试这个代码:

if (Environment.OSVersion.Version >= new Version(8, 0))
{
    NavigationService.Navigate(new Uri("/TestPageWP8.xaml", UriKind.Relative));
}
else
{
    NavigationService.Navigate(new Uri("/TestPage.xaml", UriKind.Relative));
}
于 2013-11-14T12:14:04.920 回答
1

好吧,如果它导航到TestPage,则表示条件编译符号未正确定义,或者您正在运行应用程序的 WP7 版本...似乎是这种情况,因为您的启动项目是 WP7 版本.

于 2013-11-14T12:02:02.190 回答
1

使用MangoPollo 库中的示例代码,您可以创建自己的SpeechSynthesizer

Type taskDataType = Type.GetType("Microsoft.Phone.Tasks.MapsTask, Microsoft.Phone");
object task = taskDataType.GetConstructor(new Type[] {}).Invoke(null);
Utils.SetProperty(task, "SearchTerm", SearchTerm);
if (ZoomLevel > 0)
    Utils.SetProperty(task, "ZoomLevel", ZoomLevel);
Utils.SetProperty(task, "Center", Center);
MethodInfo showmethod = taskDataType.GetMethod("Show");
showmethod.Invoke(task, new object[] {});
于 2014-05-12T10:07:57.470 回答