2012-11-08 63 views
2

我遇到了一個我完全無能爲力的問題。我收到以下錯誤消息:Gerneral Transform InvalidOperation異常未被用戶代碼處理

指定的Visual和Visual不共享一個共同的祖先,所以兩個視覺之間沒有有效的轉換。

當用戶點擊地圖上的某個點時會調用這個函數。任何幫助,將不勝感激。我附上了錯誤的片段。如果您需要更多代碼示例,請告訴我。

這是我的相關XAML:

(<)INF:DialogWindowBase X:類= 「Alliance.CommonUI.Views.Maps.EsriMapView」

<Grid> 

<Grid> 
<DataTemplate x:Key="MyFeatureLayerInfoWindowTemplate"> 
        <TextBlock Text="Content" Foreground="White" FontSize="12" /> 
       </DataTemplate> 
       <esri:SimpleRenderer x:Key="MySimpleRenderer"> 
        <esri:SimpleRenderer.Symbol> 
         <esri:SimpleFillSymbol Fill="#01FFFFFF" BorderBrush="#88000000" BorderThickness="2" /> 
        </esri:SimpleRenderer.Symbol> 
       </esri:SimpleRenderer> 
</Grid.Resources> 

      <esri:Map x:Name="MyMap" Background="#FFE3E3E3" WrapAround="True" MouseClick="MyMap_MouseClick" MouseRightButtonDown="MyMap_MouseRightButtonDown" Extent="-9834972.92753924,4441899.425293319,-9833977.88119163, 4442762.485358352"> 
       <esri:ArcGISTiledMapServiceLayer ID="MyLayer" Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" /> 
       <!--<esri:ArcGISLocalDynamicMapServiceLayer ID="Calvert_City" Path="C:\Users\jessical\Documents\ArcGIS\CalvertCity_Test.mpk"/>--> 
       <esri:ArcGISDynamicMapServiceLayer ID="Calvert_City" Url="http://localhost:6080/arcgis/rest/services/CalvertCity_Test_2/MapServer"/> 
       <esri:FeatureLayer ID="MyFeatureLayer" Url="http://localhost:6080/arcgis/rest/services/CalvertCity_Test_2/MapServer/0" 
          Renderer="{StaticResource MySimpleRenderer}" /> 
</esri:Map> 

      <Border Background="{StaticResource PanelGradient}" BorderThickness="1" CornerRadius="5" 
      HorizontalAlignment="Left" VerticalAlignment="Top" 
      Margin="20" Padding="5" BorderBrush="Black" > 
       <esri:Legend Map="{Binding ElementName=MyMap}" 
         LayerIDs="Calvert_City" 
         LayerItemsMode="Tree" 
         ShowOnlyVisibleLayers="False" 
         Refreshed="Legend_Refreshed"> 
        <esri:Legend.MapLayerTemplate> 
         <DataTemplate> 
          <StackPanel Orientation="Horizontal"> 
           <CheckBox Content="{Binding Label}" 
            IsChecked="{Binding IsEnabled, Mode=TwoWay}" 
            IsEnabled="{Binding IsInScaleRange}" > 
           </CheckBox> 
           <Slider Maximum="1" Value="{Binding Layer.Opacity, Mode=TwoWay}" Width="50" /> 
          </StackPanel> 
         </DataTemplate> 
        </esri:Legend.MapLayerTemplate> 
        <esri:Legend.LayerTemplate> 
         <DataTemplate> 
          <CheckBox Content="{Binding Label}" 
          IsChecked="{Binding IsEnabled, Mode=TwoWay}" 
          IsEnabled="{Binding IsInScaleRange}" > 
          </CheckBox> 
         </DataTemplate> 
        </esri:Legend.LayerTemplate> 
       </esri:Legend> 
      </Border> 
      <esri:InfoWindow x:Name="MyInfoWindow" 
         Padding="2" 
         CornerRadius="20" 
         Background="{StaticResource PanelGradient}" 
         Map="{Binding ElementName=MyMap}" 
         ContentTemplate="{StaticResource MyFeatureLayerInfoWindowTemplate}" 
         MouseLeftButtonUp="MyInfoWindow_MouseLeftButtonUp" /> 

enter image description here enter image description here

+0

發佈您的XAML請 –

+0

XAML已張貼 – JLott

回答

1

您正在使用TransformToVisual。它應該是TransformToAncestor。

+0

然後我收到錯誤「指定的視覺不是祖先」。 – JLott

+0

這個可視化樹在應用程序的主窗口中嗎? –

+0

嗯。我實際上認爲它可能在DialogWindowBase中。 – JLott

2

我得到這個錯誤使用SciChart的第三方控件。我發現這個錯誤正在被拋出,調試器會讓它看起來像錯誤沒有被處理。但是,當我剛剛關閉這種類型的異常並在我的catch語句中放置了一個斷點時,異常並未落入我的catch塊中。所有這些我都有些困惑,但它似乎在工作。

所以我的建議是讓調試器不會在這種類型的異常中斷,看看它是如何工作的。

+0

嗨邁克,來自SciChart的Andrew在這裏:)我實際上正在嘗試修復scichart中的這個bug,並登陸這個頁面。我們使用這個代碼'GeneralTransform transform = element.TransformToVisual(otherElement);'有時它會拋出。我們試着抓住併吞下異常。如果你或任何人都知道一種方法來測試兩個視覺是否共享一個共同的祖先,我們可以解決這個問題! –

相關問題