Wpf Silverlight错误:AG_E_未知错误
运行Silverlight项目时,我遇到了一个Wpf Silverlight错误:AG_E_未知错误,wpf,silverlight,Wpf,Silverlight,运行Silverlight项目时,我遇到了一个AG_E_UNKNOWN_错误。该项目是从WPF移植而来的,从我在web上收集到的信息来看,我认为它与我的XAML中无效的东西有关 编辑C#控制源可在此处找到: 下面是Generic.xaml,我的应用程序的样式 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas
AG_E_UNKNOWN_错误
。该项目是从WPF移植而来的,从我在web上收集到的信息来看,我认为它与我的XAML中无效的东西有关
编辑C#控制源可在此处找到:
下面是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>
如果仔细查看,该错误通常有一个与XAML中的行相关的行号。最近调试了一系列这些错误。当我看不到问题时,我只注释XAML的一大块,直到我没有得到错误,然后取消注释部分,直到找到导致异常的地方
编辑:对于初学者来说,去掉
TargetType=“{c:CalendarTimeslotItem}”
中的花括号。刚试过,我就这样得到了例外。只需使用TargetType=“c:CalendarTimeslotItem”
将系统配置为在引发异常时中断
<Style TargetType="c:CalendarTimeslotItem">
<!--<Setter Property="Content" Value="{Binding}" />-->
<Setter Property="Template">
及
我也被这个错误弄糊涂了,但是关于注释出部分并执行它以缩小范围的技巧帮助很大。我最终发现我的一个控件绑定不好。因此,如果您遇到了这个问题,请在继续之前确保您的XAML是完美的。我们刚刚遇到了相同的错误,原因是它是为x86而不是任何CPU构建的。显然,这并不是每种情况都会发生,但希望它能有所帮助,因为它肯定是我们的。如果您调试此应用程序。它是否显示发生错误的行号?不要查看HTML输出。这通常不是很有帮助。很好的调试提示,艾伦。您甚至可以在此处应用二进制搜索:)。您可以轻松确定问题是否存在于XAML中(我猜是这样):只需对XAML中的所有内容进行注释,然后查看是否得到一些“正常”异常而不是AG_E_UNKNOWN_错误。XamlException仍然是AG_E_UNKNOWN_错误。确切地说:XamlParseException:AG_E_UNKNOWN_错误[行:12位置:53]行号是我的用户控件的入口点,用户控件是用C#编写的,样式是XAML。唉,如前所述,这是完全无用的信息--你必须查看相应XAML文件中的第12行位置53,以查看是什么导致了问题。我看不出这怎么是无用的信息?因为代码是,这是一个入口点。用于创建子控件的每一段可能的代码,即大约1000行代码,都可能导致此问题。这基本上等于调试器说您的代码错误在Main()中.Happy猜测;-)这正是我的答案试图解决的问题。我的说明是尝试捕获在读取某些深度嵌套的XAML时首先捕获的异常,而不是在顶层窗口加载失败时捕获的更高级别异常。至少这是我解决XAM的策略
<Style TargetType="c:CalendarAppointmentItem">
<!--<Setter Property="StartTime" Value="{Binding StartTime}" />-->
<!--<Setter Property="EndTime" Value="{Binding EndTime}" />-->
<Setter Property="Template">