2009-11-02 67 views
4

運行我的Silverlight項目時出現AG_E_UNKNOWN_ERROR。該項目從WPF移植,從我可以收集各地的網絡,我以爲它涉及到一些無效在我的XAMLSilverlight錯誤:AG_E_UNKNOWN_ERROR

編輯 C#控制源可以在這裏找到:SilverlightCalendar/Controls

這裏的Generic.xaml,我的應用程序的樣式。

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:c="clr-namespace:SilverlightCalendar.Controls"> 

    <Style TargetType="{c:CalendarTimeslotItem}"> 
     <Setter Property="Content" Value="{Binding}" /> 
     <Setter Property="Background" Value="White" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{c:CalendarTimeslotItem}"> 
        <Border Background="{TemplateBinding Background}" 
          BorderBrush="#A5BFE1" 
          BorderThickness="0,0.5,0,0.5" 
          x:Name="bd" 
          Height="22"> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <Style TargetType="{c:CalendarLedgerItem}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{c:CalendarLedgerItem}"> 
        <Border Background="#E3EFFF" 
          BorderBrush="#6593CF" 
          BorderThickness="0,0,1,1" 
          Height="44" Width="50"> 
         <StackPanel Orientation="Horizontal" 
            VerticalAlignment="Center" 
            HorizontalAlignment="Center"> 
          <TextBlock Text="{TemplateBinding TimeslotA}" 
             Foreground="#9493CF" FontSize="16" Margin="0,3,0,0"/> 
          <TextBlock Text="{TemplateBinding TimeslotB}" 
             Foreground="#9493CF" Margin="1.5,0,0,0"/> 
         </StackPanel> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <Style TargetType="{c:CalendarDay}"> 
     <Setter Property="ItemsPanel"> 
      <Setter.Value> 
       <ItemsPanelTemplate> 
        <c:TimeslotPanel /> 
       </ItemsPanelTemplate> 
      </Setter.Value> 
     </Setter> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{c:CalendarDay}"> 
        <Border Background="{TemplateBinding Background}" 
          BorderBrush="{TemplateBinding BorderBrush}" 
          BorderThickness="{TemplateBinding BorderThickness}"> 
         <Grid> 
          <StackPanel x:Name="PART_CalendarTimeslots" /> 
          <ItemsPresenter /> 
         </Grid> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <Style TargetType="{c:CalendarLedger}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{c:CalendarLedger}"> 
        <Border Background="{TemplateBinding Background}" 
          BorderBrush="{TemplateBinding BorderBrush}" 
          BorderThickness="{TemplateBinding BorderThickness}"> 
         <StackPanel x:Name="PART_CalendarLedgerItems" /> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <Style TargetType="{c:Calendar}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{c:Calendar}"> 
        <Border Background="#E3EFFF" 
          BorderBrush="#6593CF" 
          BorderThickness="2,2,2,2"> 
         <Grid> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="50" /> 
           <ColumnDefinition Width="*" /> 
          </Grid.ColumnDefinitions> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="*" /> 
          </Grid.RowDefinitions> 
          <Border BorderBrush="#6593CF" BorderThickness="0,0,0,1" 
            Grid.Column="0" Grid.Row="1" /> 
          <Border BorderBrush="#6593CF" BorderThickness="0,0,0,1" 
            Grid.Column="1" Grid.Row="1" /> 
          <ScrollViewer Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2"> 
           <Grid> 
            <Grid.ColumnDefinitions> 
             <ColumnDefinition Width="50" /> 
             <ColumnDefinition Width="*" /> 
            </Grid.ColumnDefinitions> 

            <c:CalendarLedger Grid.Column="0" /> 
            <c:CalendarDay Grid.Column="1" x:Name="PART_CalendarDay" /> 
           </Grid> 
          </ScrollViewer> 
         </Grid> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <Style TargetType="{c:CalendarAppointmentItem}"> 
     <Setter Property="StartTime" Value="{Binding StartTime}" /> 
     <Setter Property="EndTime" Value="{Binding EndTime}" /> 
     <Setter Property="Width" Value="{Binding ActualWidth, ElementName=CalendarTimeslots}" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{c:CalendarAppointmentItem}"> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="300" /> 
          <ColumnDefinition Width="300" /> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="*" /> 
         </Grid.RowDefinitions> 
         <Border Grid.Row="0" 
           Grid.Column="{Binding Column}" 
           Grid.ColumnSpan="{Binding ColumnSpan}" 
           CornerRadius="4,4,4,4" 
           BorderThickness="1,1,1,1" 
           BorderBrush="#5D8CC9" 
           Background="{Binding Background}" 
           Margin="1,1,5,1" 
           Padding="5,5,5,5"> 
          <Border.Effect> 
           <DropShadowEffect Opacity="0.5" /> 
          </Border.Effect> 
          <TextBlock 
           IsHitTestVisible="False" 
           Foreground="{Binding Foreground}" 
           VerticalAlignment="Top" 
           MaxHeight="20" 
           LineHeight="20" 
           FontFamily="Segoe UI" 
           FontSize="12.75" 
           FontWeight="DemiBold" 
           FontStretch="Medium" 
           TextWrapping="WrapWithOverflow" 
           Text="{Binding Subject}" />        
         </Border> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</ResourceDictionary> 
+0

如果您調試此應用程序。它是否顯示錯誤發生的行號?不要看HTML輸出。這通常不是很有幫助。 – Anvaka 2009-11-02 12:49:41

回答

3

最近調試了一堆這些。當我看不到問題時,我只是評論大塊的XAML,直到我沒有得到錯誤,然後取消部分註釋,直到找到導致異常的位置。

編輯:初學者擺脫大括號在TargetType="{c:CalendarTimeslotItem}"。剛剛嘗試過,我以這種方式得到了例外。只需使用TargetType="c:CalendarTimeslotItem"

+0

非常好的調試提示,Alan。你甚至可以在這裏應用二進制搜索:)。 – Anvaka 2009-11-02 13:16:18

+0

您可以很容易地確定問題是否出現在XAML中(我猜是這樣):只需在您的xaml中註釋所有內容,並查看是否獲得了某些「正常」異常而不是該AG_E_UNKNOWN_ERROR的內容。 – 2009-11-02 13:29:51

-2

如果仔細看一下該錯誤通常有一個與XAML中的行相關的行號。

2

將您的系統配置爲在拋出異常時中斷。

  1. 在Visual Studio中選擇調試菜單,然後例外...

  2. 例外對話框標記旁邊公共語言運行庫異常時拋出複選框。

  3. 在調試器中啓動項目(確保已啓用Silverlight調試)。

你很可能會看到被拋出一些無關痛癢的例外(只是繼續調試),但在一個點上,你應該看到問題的XAML例外。檢查例外情況,看看是否可以計算出行號。如果在代碼隱藏文件中拋出異常,您可以從代碼隱藏文件推斷出XAML文件。

+0

XamlException仍然是AG_E_UNKNOWN_ERROR。 – 2009-11-02 13:34:01

+0

準確地說: XamlParseException:AG_E_UNKNOWN_ERROR [行:12的位置:53] ,行號是我的用戶控制的入口點,並且用戶控制是用C#和與XAML樣式。哪個唉,已經說明了,完全沒用的信息-.- – 2009-11-02 13:36:59

+0

你必須在相應的XAML文件中查看第12行第53行,看看是什麼導致了這個問題。我不明白這是無用的信息? – 2009-11-02 14:10:56

0

問題解決了(和其他產生,但這是另一天)

在我的情況下,使用模板中的其他界性能均導致了問題。

<Style TargetType="c:CalendarTimeslotItem"> 
    <!--<Setter Property="Content" Value="{Binding}" />--> 
    <Setter Property="Template"> 

而且

<Style TargetType="c:CalendarAppointmentItem"> 
    <!--<Setter Property="StartTime" Value="{Binding StartTime}" />--> 
    <!--<Setter Property="EndTime" Value="{Binding EndTime}" />--> 
    <Setter Property="Template"> 
1

我被這個錯誤fustrated爲好,但對註釋掉部分並執行將它縮小了很多幫助的提示。我終於在我的一個控件上找到了一個不好的綁定。所以如果你得到這個,在繼續之前確保你的XAML是完美的。

1

我們只是有同樣的錯誤,原因是它是爲x86而不是任何CPU構建的。顯然這不是每個案例,但希望它有幫助,因爲它肯定是我們的。

+0

這也是我的原因。我碰巧看到VS中的「輸出」窗口,並看到一個「BadImageFormatException」。那時候我意識到我的一個Silverlight庫已經被設置爲「x86」,而其餘的項目是「任何CPU」。 – McGarnagle 2013-02-19 22:38:03

+0

我正在清理引用並優化了我的解決方案,因此我將Silverlight項目的平臺從**任意CPU **更改爲** x86 **,並開始解決該問題,將其切換回來,一切正常。 – Amro 2015-09-21 07:14:26