2012-01-08 43 views
0

我的windows phone應用程序出現問題。我有谷歌解決方案,但我發現更好的是重寫該頁面一次,所以我這樣做,但我仍然有這個錯誤,我不知道爲什麼。這是我的XAML代碼無法使用finalRect中的無限或NaN值調用PushPin和錯誤UIElement.Arrange(finalRect)

<phone:PhoneApplicationPage 
    x:Class="GeoWatcher.Watch" 
    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" 
    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" xmlns:my="clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps" Loaded="PhoneApplicationPage_Loaded"> 

    <!--LayoutRoot is the root grid where all page content is placed--> 
    <Grid x:Name="LayoutRoot" Background="Transparent"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 

     <!--TitlePanel contains the name of the application and page title--> 
     <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> 
      <TextBlock x:Name="AplicationTitleTextBox" Text="GeoWatcher" Style="{StaticResource PhoneTextNormalStyle}"/> 
      <TextBlock x:Name="PageTitle" Text="Your trip" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> 
     </StackPanel> 

     <!--ContentPanel - place additional content here--> 
     <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
      <my:Map Height="500" HorizontalAlignment="Left" Margin="0,101,0,0" Name="MyMap" VerticalAlignment="Top" Width="450" CredentialsProvider=""/> 
      <Button Content="Button" Height="72" HorizontalAlignment="Left" Margin="290,23,0,0" Name="StopButton" VerticalAlignment="Top" Width="160" /> 
      <TextBlock Height="30" HorizontalAlignment="Left" Margin="12,47,0,0" Name="DistanceTextBlock" Text="TextBlock" VerticalAlignment="Top" /> 
     </Grid> 
    </Grid> 

    <!--Sample code showing usage of ApplicationBar--> 
    <!--<phone:PhoneApplicationPage.ApplicationBar> 
     <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True"> 
      <shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1"/> 
      <shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Button 2"/> 
      <shell:ApplicationBar.MenuItems> 
       <shell:ApplicationBarMenuItem Text="MenuItem 1"/> 
       <shell:ApplicationBarMenuItem Text="MenuItem 2"/> 
      </shell:ApplicationBar.MenuItems> 
     </shell:ApplicationBar> 
    </phone:PhoneApplicationPage.ApplicationBar>--> 

</phone:PhoneApplicationPage> 

這裏是我的C#代碼

public partial class Watch : PhoneApplicationPage 
    { 
     public IsolatedStorageFile myStore; 
     GeoCoordinate destinationPointPosition; 
     Pushpin destinationPointPushPin; 
     Pushpin actualPositionPushPin; 
     GeoCoordinateWatcher watcher; 


     public Watch() 
     { 
      InitializeComponent(); 
     } 

     private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) 
     { 
      this.myStore = IsolatedStorageFile.GetUserStoreForApplication(); 
      this.DistanceTextBlock.Text = ""; 
      loadSelectedPoint(); 
      this.destinationPointPushPin = new Pushpin(); 
      this.destinationPointPushPin.Location = this.destinationPointPosition; 
      this.MyMap.Children.Add(destinationPointPushPin); 
      this.watcher = new GeoCoordinateWatcher(); 
      this.watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged); 
      this.watcher.Start(); 
      this.actualPositionPushPin = new Pushpin(); 
      this.actualPositionPushPin.Location = this.watcher.Position.Location; 
      this.MyMap.Children.Add(this.actualPositionPushPin); 
      this.MyMap.SetView(this.actualPositionPushPin.Location, 12); 
     } 

     void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) 
     { 
      this.actualPositionPushPin.Location = e.Position.Location; 
     } 
     private void loadSelectedPoint() 
     { 
      try 
      { 

       using (var isoFileStream = new IsolatedStorageFileStream("folder\\selected.txt", FileMode.Open, myStore)) 
       { 
        // Read the data. 
        using (var isoFileReader = new StreamReader(isoFileStream)) 
        { 
         String temp = isoFileReader.ReadLine(); 
         string[] tab = temp.Split('@'); 
         GeoCoordinate geo = new GeoCoordinate(double.Parse(tab[1]), double.Parse(tab[2])); 
         this.destinationPointPosition = geo; 
        } 
       } 

      } 
      catch (Exception b) 
      { 
       MessageBox.Show(b.Message); 
      } 

     } 
    } 

我檢查,並從文件加載正確的數據。問題是我用圖釘猜測,但我不知道如何解決它。

+0

在哪行代碼中引發錯誤? – 2012-01-31 14:26:23

回答

0

您無法將PushPin.Location設置爲GeoCoordinate值爲Unknown。檢查GeoCoordinate的IsUnknown屬性,如果屬實 - 不要顯示圖釘。

相關問題