2011-12-05 17 views
0

私はWP7用のアプリケーションを開発していますが、私はこれまで見たことのない問題に遭遇しました。エミュレータでビルドして実行すると、デバッグとノー・デバッグ(ctrl-F5)の両方で動作するように動作します。しかし、Windowsデバイスでは、デバッグ(F5)でしか動作しません。私がデバッグ(ctrl-F5)せずにデバイス上で実行すると、アプリケーションが起動しますが、ボタンをクリックするとアプリケーションを終了します。ボタンをクリックすると、xmlファイルが読み込まれます。 xmlファイルはBuild Action "Content"に設定され、 "Copy"は "Do not copy"と出力されます。私は何か間違っているのですか?デバッグとノー・デバッグのエミュレータで動作しますが、デバイス上のデバッグでのみ動作します

<phone:PhoneApplicationPage 
x:Class="appname.NamesList" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:local="clr-namespace:appname" 
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" 
FontFamily="{StaticResource PhoneFontFamilyNormal}" 
FontSize="{StaticResource PhoneFontSizeNormal}" 
Foreground="{StaticResource PhoneForegroundBrush}" 
SupportedOrientations="Portrait" Orientation="Portrait" 
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480" 
shell:SystemTray.IsVisible="True"> 

<phone:PhoneApplicationPage.DataContext> 
    <local:MainViewModel /> 
</phone:PhoneApplicationPage.DataContext> 

<Grid x:Name="LayoutRoot" 
     Background="Transparent"> 
    <toolkit:LongListSelector ItemsSource="{Binding Persons}"> 
     <toolkit:LongListSelector.GroupItemsPanel> 
      <ItemsPanelTemplate> 
       <toolkit:WrapPanel Orientation="Horizontal" /> 
      </ItemsPanelTemplate> 
     </toolkit:LongListSelector.GroupItemsPanel> 
     <toolkit:LongListSelector.GroupHeaderTemplate> 
      <DataTemplate> 
       <Border Background="Transparent"> 
        <Border Width="75" 
          Height="75" 
          HorizontalAlignment="Left" 
          Background="{StaticResource PhoneAccentBrush}"> 
         <TextBlock VerticalAlignment="Bottom" 
            Foreground="{StaticResource PhoneForegroundBrush}" 
            Style="{StaticResource PhoneTextExtraLargeStyle}" 
            Text="{Binding Key}" /> 
        </Border> 
       </Border> 
      </DataTemplate> 
     </toolkit:LongListSelector.GroupHeaderTemplate> 
     <toolkit:LongListSelector.GroupItemTemplate> 
      <DataTemplate> 
       <Border Width="75" 
         Height="75" 
         Background="{StaticResource PhoneAccentBrush}" 
         IsHitTestVisible="{Binding HasItems}"> 
        <TextBlock VerticalAlignment="Bottom" 
           Margin="{StaticResource PhoneTouchTargetOverhang}" 
           FontFamily="{StaticResource PhoneFontFamilySemiBold}" 
           FontSize="{StaticResource PhoneFontSizeExtraLarge}" 
           Foreground="{StaticResource PhoneForegroundBrush}" 
           Text="{Binding Key}" /> 
       </Border> 
      </DataTemplate> 
     </toolkit:LongListSelector.GroupItemTemplate> 
     <toolkit:LongListSelector.ItemTemplate> 
      <DataTemplate> 
       <Grid Margin="{StaticResource PhoneTouchTargetOverhang}"> 
        <HyperlinkButton Name="cmdName" 
            Content="{Binding Name}" 
            Click="cmdName_Click" 
            Margin="75,0,0,0" 
            HorizontalAlignment="Left" 
            FontSize="40" /> 
       </Grid> 
      </DataTemplate> 
     </toolkit:LongListSelector.ItemTemplate> 
    </toolkit:LongListSelector> 

</Grid> 

そしてMainViewModel:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Animation; 
using System.Windows.Shapes; 
using Microsoft.Phone.Controls; 
using appname.Helpers; 

namespace appname 
{ 
    public class MainViewModel 
    { 
     public MainViewModel() 
     { 
      App app = Application.Current as App; 

      XmlHelper xmlHelper = new XmlHelper(); 
      app.persons = xmlHelper.GetPersons(app.gender); 
      List<Person> persons = app.persons; 


      this.Persons = new LongListCollection<Person,char>(persons, person => person.Name[0]); 
     } 

     public LongListCollection<Person, char> Persons 
     { 
      get; 
      private set; 
     } 
    } 
} 

編集 コードロードbeeingてXAMLファイルに次のコードは、エラーとは何かを持っている場合、私は思ったんだけどxmlファイルの読み込み:

public List<Person> GetPersons(string gender) 
    { 
     string xmlPath = ""; 
     if (gender == "Boys") 
      xmlPath = @"Resources/Boys/Xml/Names.xml"; 
     else if(gender == "Girls") 
      xmlPath = @"Resources/Girls/Xml/Names.xml"; 

     //Uri uri = new Uri(xmlPath, UriKind.Relative); 
     StreamResourceInfo sm = Application.GetResourceStream(new Uri(xmlPath, UriKind.Relative)); 
     System.Xml.XmlReader xr = System.Xml.XmlReader.Create(sm.Stream); 

     XDocument data = XDocument.Load(xr); 



     return (from c in data.Descendants("Person") 
       orderby c.Attribute("Name") 
       select new Person() 
       { 
        Name = c.Element("Name").Value, 
        Description = c.Element("Description").Value, 
        ... 
        HasGraph = c.Element("HasGraph").Value 
       }).ToList(); 
    } 

編集

<Capabilities> 
    <Capability Name="ID_CAP_GAMERSERVICES"/> 
    <Capability Name="ID_CAP_IDENTITY_DEVICE"/> 
    <Capability Name="ID_CAP_IDENTITY_USER"/> 
    <Capability Name="ID_CAP_LOCATION"/> 
    <Capability Name="ID_CAP_MEDIALIB"/> 
    <Capability Name="ID_CAP_MICROPHONE"/> 
    <Capability Name="ID_CAP_NETWORKING"/> 
    <Capability Name="ID_CAP_PHONEDIALER"/> 
    <Capability Name="ID_CAP_PUSH_NOTIFICATION"/> 
    <Capability Name="ID_CAP_SENSORS"/> 
    <Capability Name="ID_CAP_WEBBROWSERCOMPONENT"/> 
    <Capability Name="ID_CAP_ISV_CAMERA"/> 
    <Capability Name="ID_CAP_CONTACTS"/> 
    <Capability Name="ID_CAP_APPOINTMENTS"/> 
</Capabilities> 

答えて

0

神私のああ

私は自分の携帯電話に別のアプリを起動してみました、それはまた、終了しました。だから、私は電話を再起動しました(私はこれを昨日やったと思っていました)。あなたの時間を無駄にして申し訳ありません!

恥ずかしい愚か者に感謝します!

+0

評判が十分であれば、あなた自身の質問を削除できます。可能であれば、そうすることをお勧めします。 –

+0

はいClausですが、削除するまで2日待たなければなりません。助けてくれてありがとう! –

0

あなたが言うあたりの投稿コードと間違って何もありません。私たちはあなたの詳細を与えるために、あなたのXmlHelperクラスのコードを見る必要があります。

しかし、間違った方法でリソース管理を処理していると思われます。また、try/catchでコードをラップし、MessageBox.Showを例外メッセージとともに使用することをお勧めします。

少なくとも、クラッシュが例外に関連するかどうかを確認する必要があります。

public MainViewModel() 
{ 
    try 
    { 
     App app = Application.Current as App; 

     XmlHelper xmlHelper = new XmlHelper(); 
     app.persons = xmlHelper.GetPersons(app.gender); 
     List<Person> persons = app.persons; 


     this.Persons = new LongListCollection<Person,char>(persons, person => person.Name[0]); 
    } 
    catch (Exception e) 
    { 
     MessageBox.Show(e.Message); 
    } 
} 
+0

try catchを追加しましたが、アプリの終了時に表示されません。また、ポストにXMLコードが追加されました。 –

+0

その後、Exitは 'MainViewModel'のあなたのコードとは関係ありません。再展開する前に、アプリケーションをアプリケーションで完全にアンインストールしましたか? –

+0

はい。リストがロードされ、 "A"をクリックした後に "N"(ランダム)をクリックすると、今すぐ試してみると、それは終了します。そして次回起動すると、リストがロードされる前に終了します。同じことが昨日の夜に起こった。奇妙な...! –

関連する問題