GVKun编程网logo

在Windows Phone 7上解析JSON(ios解析json崩溃)

1

在这篇文章中,我们将带领您了解在WindowsPhone7上解析JSON的全貌,包括ios解析json崩溃的相关情况。同时,我们还将为您介绍有关c#–ListBoxVirtualizingStackP

在这篇文章中,我们将带领您了解在Windows Phone 7上解析JSON的全貌,包括ios解析json崩溃的相关情况。同时,我们还将为您介绍有关c# – ListBox VirtualizingStackPanel.VirtualizationMode =“回收”在Windows Phone 7.5中不起作用、c# – 在Windows 10中部署Windows Phone 8.1应用程序时找不到IpOverUsbSvc、c# – 在Windows Phone 8.1 / WinRT中设置AutoFlash、c# – 在Windows Phone 8.1 Universal Store App中触发警报?的知识,以帮助您更好地理解这个主题。

本文目录一览:

在Windows Phone 7上解析JSON(ios解析json崩溃)

在Windows Phone 7上解析JSON(ios解析json崩溃)

我正在尝试在 Windows Phone 7上进行一些简单的 JSON操作. JSON.NET看起来很棒,但是当我尝试添加对它的引用时,VS2010会抱怨.

它让我添加Silverlight DLL,但警告我它可能会导致奇怪的应用程序行为,所以我怀疑它实际上是否有效.

This看起来像是序列化和反序列化数据的好方法,但我需要实际查询它.我可以使用这种技术将其序列化为IQueryable,然后使用LINQ吗?我可以以某种方式将JSON转换为XML并使用LINQ吗?

或者我应该自己做hacky和悲伤的字符串操作?

更新:出于某种原因,我甚至无法让VS2010识别DataContractJsonSerializer:

// works
        DataContractSerializer ser1 = new DataContractSerializer();

        // the type or namespace 'DataContractJsonSerializer' Could not be found ...
        DataContractJsonSerializer ser = new DataContractJsonSerializer();

更新2:以下还抱怨:

using System.Runtime.Serialization.Json;

错误:

The type or namespace name ‘Json’ does
not exist in the namespace
‘System.Runtime.Serialization’ (are
you missing an assembly reference?)

我做错了什么,或者wp7不支持JSON?

更新3:看起来DataContractJsonSerializer位于System.Servicemodel.Web命名空间中.

更新4:我添加了对Silverlight JSON.NET DLL的引用,它现在似乎工作正常.手指交叉.

解决方法

是的,根据您的更新3(差不多):
DataContractJsonSerializer位于System.Servicemodel.Web.dll程序集中,但位于System.Runtime.Serialization.Json命名空间中.

它吸引了不少人.

很高兴你似乎有这个工作.

c# – ListBox VirtualizingStackPanel.VirtualizationMode =“回收”在Windows Phone 7.5中不起作用

c# – ListBox VirtualizingStackPanel.VirtualizationMode =“回收”在Windows Phone 7.5中不起作用

我一直在处理我正在研究的 Windows Phone 7.5应用程序中的一些性能问题.我有一个使用VirtualizationMode =“Recycling”和DataTemplate的ListBox.除了性能不佳外,它似乎工作正常.在进行一些性能分析时,我正在看,当我滚动列表时,正在使用62%的cpu正在创建一个自定义用户控件的新实例,我已放置在DataTemplate中.我理解VirtualizationMode =“Recycling”的重点是重用ListBox中的所有UIElements而不需要创建新实例或处理旧实例,所以我希望这正是那种不应该发生的事情.

这是相关的XAML:

<ListBox ItemsSource="{Binding EpisodeRows}" toolkit:TiltEffect.Suppresstilt="True" Margin="12,0" VirtualizingStackPanel.VirtualizationMode="Recycling">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid VerticalAlignment="Top" Height="111" VirtualizingStackPanel.VirtualizationMode="Recycling" >
                <StackPanel Orientation="Horizontal" Visibility="{Binding TilesVisibility}">
                    <landerGame:LevelTileUserControl PartText="{Binding PartText_1}" scoreText="{Binding scoreText_1}" Star1Visibility="{Binding Star1Vi
                    <landerGame:LevelTileUserControl PartText="{Binding PartText_2}" scoreText="{Binding scoreText_2}" Star1Visibility="{Binding Star1Vi
                    <landerGame:LevelTileUserControl PartText="{Binding PartText_3}" scoreText="{Binding scoreText_3}" Star1Visibility="{Binding Star1Vi
                    <landerGame:LevelTileUserControl PartText="{Binding PartText_4}" scoreText="{Binding scoreText_4}" Star1Visibility="{Binding Star1Vi
                    <landerGame:LevelTileUserControl PartText="{Binding PartText_5}" scoreText="{Binding scoreText_5}" Star1Visibility="{Binding Star1Vi
                    <landerGame:LevelTileUserControl PartText="{Binding PartText_6}" scoreText="{Binding scoreText_6}" Star1Visibility="{Binding Star1Vi
                </StackPanel>
                <TextBlock VerticalAlignment="Top" Text="{Binding EpisodeTitleText}"Margin="0,5" 
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

这是滚动列表时我的性能分析结果的屏幕截图:

这是列表的样子(这是游戏的级别选择):

我环顾四周,发现任何解决VirtualizationMode =“回收”的文章似乎无法正常工作.在这一点上,任何见解都将是最受欢迎的.

编辑:我已经上传了这个项目的完整相关代码,任何人都可以在这里自己尝试:http://maketag.net/landerGame.rar

解决方法

由于您未提供有关用户控件的任何信息,因此很难测试.

我建议远离ListBox,因为你试图在这里模拟的行为实际上是WrapPanel.

由于您为每个ListBox项添加了这么多用户控件的方式,我猜它会导致性能下降.如果您切换到WrapPanel然后绑定到您的项目集合,您可能会获得更好的性能,因为每个项目将被虚拟化而不必尝试一次虚拟化六个项目(这可能不起作用).

编辑:查看代码我认为您可以进行一些改进以提高性能.首先,摆脱ListBox并使用如下的ItemsControl:

<controls:Pivot Title="LANDER GAME">
    <!--Pivot item one-->
    <controls:PivotItem Header="Episodes">
        <ScrollViewer>
            <ItemsControl ItemsSource="{Binding EpisodeRows}" toolkit:TiltEffect.Suppresstilt="True" Margin="12,0">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Grid VerticalAlignment="Top" Height="111" >
                            <StackPanel Orientation="Horizontal" Visibility="{Binding TilesVisibility}">
                                ...
                            </StackPanel>
                            <TextBlock VerticalAlignment="Top" Text="{Binding EpisodeTitleText}"Margin="0,5" Visibility="{Binding TitleVisibility}" />
                        </Grid>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </ScrollViewer>
    </controls:PivotItem>

我要做的就是摆脱硬编码的PartText_1,PartText_2类型的变量.只需创建一个项目列表,并在其他项目控件中包含另一个ItemsControl.

只是摆脱ListBox使它更顺畅.我还删除了VirtualizingStackPanel.VirtualizationMode =“Recycling”,因为它在开始时导致了性能损失,一旦加载它看起来更平滑.

c# – 在Windows 10中部署Windows Phone 8.1应用程序时找不到IpOverUsbSvc

c# – 在Windows 10中部署Windows Phone 8.1应用程序时找不到IpOverUsbSvc

我正在尝试在 Windows 10中部署 Windows Phone 8.1应用程序.我收到以下错误:

Error : DEP6200 : Boostrapping ‘Device’ Failed. Device cannot be found. Windows Phone IP over USB Transport (IpOverUsbSvc) is not running. Retry after starting Windows Phone IP over USB Transport (IpOverUsbSvc) from the services management console.

Error : DEP6100 : The following unexpected error occurred during boostrapping stage ‘Connecting to the device’:
SmartDeviceException – Windows Phone IP over USB Transport (IpOverUsbSvc) is not running. Retry after starting Windows Phone IP over USB Transport (IpOverUsbSvc) from the services management console.

我的Lumia手机已连接,可从Windows文件资源管理器访问.

我已经检查了IpOverUsbSvc服务的服务,但它不在那里.所以我也检查了powershell:get-service IpOverUsbSvc

Status   Name               displayName
------   ----               -----------
Stopped  IpOverUsbSvc       Windows Phone IP over USB Transport...

我在使用Windows 8.1时没有收到这些错误.似乎此服务在Windows 10中不可用.

任何人都可以帮我解决这个问题吗?

解决方法

当我将我的开发系统从10166升级到10240时,我遇到了类似的问题 – IpOverUsbSvc无法启动.

似乎……在某些情况下,ipoverusbsvc的注册信息已损坏.要修复它,只需将正确的信息放入注册表.

您可以找到ms guy将正确的.reg文件上传到他的onedrive的以下链接.

[UWP][SDK]IpOverUsbSvc service missing in windows 10 RC (Build 10240)

c# – 在Windows Phone 8.1 / WinRT中设置AutoFlash

c# – 在Windows Phone 8.1 / WinRT中设置AutoFlash

我目前在 Windows Phone 8.1应用程序中使用MediaCapture.我让相机按要求工作,但改变闪光状态证明是困难的.
与默认的相机应用程序一样,我希望有三种状态 – 自动,关闭和开启.我正在使用的代码如下:

switch (mode)
    {
      case FlashMode.Auto:
        _captureManager.VideoDeviceController.FlashControl.Auto = true;
        _captureManager.VideoDeviceController.FlashControl.Enabled = false;
        if (_captureManager.VideoDeviceController.FlashControl.AssistantLightSupported)
          _captureManager.VideoDeviceController.FlashControl.AssistantLightEnabled = true;
        break;

      case FlashMode.On:
        _captureManager.VideoDeviceController.FlashControl.Auto = false;
        _captureManager.VideoDeviceController.FlashControl.Enabled = true;
        if (_captureManager.VideoDeviceController.FlashControl.AssistantLightSupported)
          _captureManager.VideoDeviceController.FlashControl.AssistantLightEnabled = true;
        break;

      case FlashMode.Off:
        _captureManager.VideoDeviceController.FlashControl.Auto = false;
        _captureManager.VideoDeviceController.FlashControl.Enabled = false;
        if (_captureManager.VideoDeviceController.FlashControl.AssistantLightSupported)
          _captureManager.VideoDeviceController.FlashControl.AssistantLightEnabled = false;
        break;
    }

“开”和“关”模式工作正常,相机启动时设置为“自动”.但是,一旦您将相机更改为开启,然后关闭然后再返回自动,则闪光灯永远不会再次打开(我已经确认它不是场景的照明).我有什么想法可以重新启用自动闪光?

解决方法

Enabled优先于Auto,因为它在整个FlashControl上运行.

如果需要自动闪存,则需要将Enabled和Auto设置为true.

c# – 在Windows Phone 8.1 Universal Store App中触发警报?

c# – 在Windows Phone 8.1 Universal Store App中触发警报?

这似乎在 Windows 8.1 Universal Store App中正常工作,但在Windows Phone 8.1 Universal Store App中却没有.这可以调整为适用于Windows手机,就像它对Windows平板电脑一样吗?

XML文件:

<toast duration="long" launch="alarm(eb6c47a8-e5e2-40d0-bc4e-3aa957f36484)">
    <visual>
        <binding template="ToastimageAndText04">
            <text id="1">Alarm App</text>
            <text id="2">Alarm Test</text>
            <text id="3">Time to wake up!</text>
        </binding>
    </visual>
    <audio loop="true" src="ms-winsoundevent:Notification.Looping.Alarm2" />
    <commands scenario="alarm">
        <command id="snooze" />
        <command id="dismiss" />
    </commands>
</toast>

通知类:

public class Notification
{
    public async Task CreateNotification()
    {
        StorageFolder storageFolder = Package.Current.InstalledLocation;
        var toast = await storageFolder.GetFileAsync("toast.xml");
        var xml = await FileIO.ReadTextAsync(toast);
        NotifyScheduled(xml);
    }

    private void NotifyScheduled(string toast,int delay = 5,int snooze = 300,int maxSnoozeCount = 3)
    {
        XmlDocument document = new XmlDocument();
        document.LoadXml(toast);

        var notifier = Toastnotificationmanager.CreatetoastNotifier();
        var scheduledToast = new ScheduledToastNotification(document,DateTime.Now.AddSeconds(delay),TimeSpan.FromSeconds(snooze),(uint)maxSnoozeCount);
        notifier.AddToSchedule(scheduledToast);
    }
}

并在Phone的xaml.cs页面中实现:

var note = new Notification();
note.CreateNotification();

结果应如下所示:

但它目前只是像这样做一个常规的吐司通知(在你根据需要解雇或打盹之前不会发出警报):

就像我提到的,我可以让它在Windows平板电脑(Windows 8.1)中正常工作,它看起来像这样:

编辑:值得注意的是,如果您的平板电脑设备没有将您的应用程序指定为默认警报应用程序(只能分配一个),则不会显示“暂停/关闭”按钮.但是,在Windows Phone 8.1中,没有选项可以定义默认警报应用程序的内容.

解决方法

不幸的是(因为我也需要警报),目前似乎不可能.

这是一篇关于Windows Phone 8.0和8.1中的功能的非常好的文章,以及它们如何映射以及可以在哪里执行的操作:http://msdn.microsoft.com/en-us/library/dn642486(v=vs.105).aspx

有一节(第一节)叫

Windows Phone 8 features for which there is no Windows Phone Store equivalent

在其中,你可以看到

Alarms and reminders

关于在Windows Phone 7上解析JSONios解析json崩溃的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于c# – ListBox VirtualizingStackPanel.VirtualizationMode =“回收”在Windows Phone 7.5中不起作用、c# – 在Windows 10中部署Windows Phone 8.1应用程序时找不到IpOverUsbSvc、c# – 在Windows Phone 8.1 / WinRT中设置AutoFlash、c# – 在Windows Phone 8.1 Universal Store App中触发警报?等相关内容,可以在本站寻找。

本文标签: