2014-02-13 28 views
0

我正在使用Windows Phone 8應用程序並希望添加增強現實功能,並且我正在使用GART,但我在那裏遇到了相同的issue ,甚至有一個解決方案,通過添加畫布Igor Ralic .zindex爲1,我仍然遇到同樣的問題(世界觀中的項目閃爍和消失),所以也許有人在這裏有更好的解決方案?我使用MVVM百通與此ARGART增強現實問題

這裏工作是我與MVVM方法

這是我mainviewmodel

private ObservableCollection<ARItem> _ardisplayLocation = null; 
public ObservableCollection<ARItem> ardisplayLocation 
{ 
    get { return _ardisplayLocation; } 
    set { this.SetProperty(ref this._ardisplayLocation, value); } 
} 

private void UpdateTransport() 
    { 
     try 
     { 
      myMessage = "Loading web server data..."; 
      WebClient client = new WebClient(); 
      Uri uri = new Uri(transportURL1 + latitude + "%2C" + longitude + transportURL2, UriKind.Absolute); 
      client.DownloadStringCompleted += (s, e) => 
      { 
       MainPage mainpage = new MainPage(); 
       mainpage.RefreshButton(); 
       if (e.Error == null) 
       { 
        RootObject result = JsonConvert.DeserializeObject<RootObject>(e.Result); 
        hereRestProperty = new ObservableCollection<Item>(result.results.items); 

        for (int i = 0; i < hereRestProperty.Count; i++) 
        { 
         ardisplayLocation.Add(new CityPlace() 
         { 
          GeoLocation = new GeoCoordinate(hereRestProperty[i].coordinate.Latitude,hereRestProperty[i].coordinate.Longitude), 
          Content = hereRestProperty[i].title, 
          Description = hereRestProperty[i].vicinity 
         }); 
        } 
       } 
       else 
       { 
        isFailed = Visibility.Visible; 
        myMessage = "Failed to load web server data, please refresh"; 
       } 
       isBusy = false; 
      }; 
      client.DownloadStringAsync(uri); 
     } 
     catch (Exception) 
     { 
      isBusy = false; 
      isFailed = Visibility.Visible; 
      myMessage = "Something wrong happen, please refresh"; 
     } 
    } 

,這裏是我的ArDisplay.xaml.cs

private MainViewModel mvm { get { return this.DataContext as MainViewModel; } } 

public ArDisplay() 
{ 
    InitializeComponent(); 
    DataContext = App.ViewModel; 
} 

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
{ 
    ardisplay.StartServices(); 
    ardisplay.ARItems = mvm.ardisplayLocation; 
    base.OnNavigatedTo(e); 
} 

protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e) 
{ 
    ardisplay.StopServices(); 
    base.OnNavigatedFrom(e); 
} 

and my xaml

<gart:ARDisplay Name="ardisplay" AttitudeRefreshRate="50" MovementThreshold="10"> 
    <gart:VideoPreview x:Name="videoPreview" Canvas.ZIndex="1"/> 
    <gart:WorldView x:Name="worldView" Canvas.ZIndex="1" ItemTemplate="{StaticResource CityItemTemplate}" MinItemScale="0.1" MaxItemScale="1.0" FarClippingPlane="300.0" NearClippingPlane="1.0"/> 
    <gart:HeadingIndicator x:Name="headingIndicator" Canvas.ZIndex="1" Width="300" Height="300" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
</gart:ARDisplay> 

和我的數據模板

<DataTemplate x:Key="CityItemTemplate"> 
    <Border BorderBrush="Black" BorderThickness="4" CornerRadius="8" Background="#FF003847" Width="320"> 
     <StackPanel Margin="4"> 
      <TextBlock x:Name="NameBlock" TextWrapping="NoWrap" Text="{Binding Content}" FontSize="38" VerticalAlignment="Center" Margin="0,0,4,0" Grid.Column="1" TextTrimming="WordEllipsis"/> 
      <TextBlock x:Name="DescriptionBlock" TextWrapping="Wrap" Text="{Binding Description}" FontSize="24" VerticalAlignment="Center" Margin="0,0,4,0" Grid.Column="1" TextTrimming="WordEllipsis" MaxHeight="168"/> 
     </StackPanel> 
    </Border> 
</DataTemplate> 

回答

1

Canvas.ZIndex從您的DataTemplate缺少

<DataTemplate x:Key="CityItemTemplate"> 
    <Border BorderBrush="Black" BorderThickness="4" CornerRadius="8" Background="#FF003847" Width="320" Canvas.ZIndex="2"> 
     <StackPanel Margin="4"> 
      <TextBlock x:Name="NameBlock" TextWrapping="NoWrap" Text="{Binding Content}" FontSize="38" VerticalAlignment="Center" Margin="0,0,4,0" Grid.Column="1" TextTrimming="WordEllipsis"/> 
      <TextBlock x:Name="DescriptionBlock" TextWrapping="Wrap" Text="{Binding Description}" FontSize="24" VerticalAlignment="Center" Margin="0,0,4,0" Grid.Column="1" TextTrimming="WordEllipsis" MaxHeight="168"/> 
     </StackPanel> 
    </Border> 
</DataTemplate>