Ошибка Silverlight: AG_E_UNKNOWN_ERROR - PullRequest
4 голосов
/ 02 ноября 2009

Я получаю AG_E_UNKNOWN_ERROR при запуске моего проекта Silverlight. Проект перенесен из WPF, и из того, что я могу собрать по сети, я бы предположил, что это связано с чем-то недопустимым в моем XAML

РЕДАКТИРОВАТЬ 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>

Ответы [ 6 ]

3 голосов
/ 02 ноября 2009

Сконфигурируйте вашу систему, чтобы она ломалась при возникновении исключений.

  1. В Visual Studio выберите меню Отладка , затем Исключения ... .

  2. В диалоговом окне Исключения установите флажок Брошенный рядом с Исключения общего времени выполнения .

  3. Запустите проект в отладчике (убедитесь, что отладка Silverlight включена).

Скорее всего, вы увидите выброс не относящихся к делу исключений (просто продолжайте отладку), но в какой-то момент вы должны увидеть исключающее исключение XAML. Проверьте исключение, чтобы увидеть, можете ли вы выяснить номер строки. Если исключение создается в файле с выделенным кодом, вы можете вывести файл XAML из файла с выделенным кодом.

3 голосов
/ 02 ноября 2009

Недавно отладил кучу таких. Когда я не вижу проблемы, я просто комментирую большой кусок XAML, пока не получаю сообщение об ошибке, а затем раскомментирую детали, пока не найду место, вызывающее исключение.

РЕДАКТИРОВАТЬ: для начала избавиться от фигурных скобок в TargetType="{c:CalendarTimeslotItem}". Только что попробовал, и я получаю исключение таким образом. Просто используйте TargetType="c:CalendarTimeslotItem"

1 голос
/ 25 апреля 2012

У нас была та же самая ошибка, и причина была в том, что она была построена для x86 вместо Any CPU. Ясно, что это будет не каждый случай, но надеюсь, что это поможет, поскольку это, конечно, наш.

1 голос
/ 25 января 2011

Я тоже был разочарован этой ошибкой, но подсказка о том, как закомментировать части и выполнить их, чтобы сузить их, очень помогла. В конце концов я нашел плохую привязку на одном из моих элементов управления. Поэтому, если вы получаете это, убедитесь, что ваш XAML идеален, прежде чем продолжать.

0 голосов
/ 03 ноября 2009

проблема решена (и другие возникают, но это на другой день)

В моем случае проблема была связана с использованием других ограниченных свойств в шаблоне.

    <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">
0 голосов
/ 02 ноября 2009

Если вы внимательно посмотрите, у этой ошибки обычно есть номер строки, относящийся к строкам в XAML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...