Использование Google Analytics в Silverlight 4 - PullRequest
0 голосов
/ 19 июля 2011


Я пытаюсь интегрировать Google Analytics в свое приложение Silverlight 4 из браузера. Когда я добавляю свой код Google Analytics в свой XAML, как показано ниже:

    <i:Interaction.Behaviors>
        <ga:GoogleAnalytics WebPropertyId="xxxxxxxxxxxxx"/>
    </i:Interaction.Behaviors>

Я получаю ошибку, которая "Добавление значения в коллекцию типа 'System.Windows.Interactivity.BehaviorCollection' вызвало исключение."

Я не могу найти большую помощь в сети по этому поводу, мало кто указал на мой код управления пользователем, который является:

xmlns: i = "http://schemas.microsoft.com/expression/2010/interactivity"

В настоящее время я использую VS 2010 и смесь 4 для этого.
Спасибо, что прочитали это, и если вы сможете помочь мне в этом вопросе, было бы здорово.

РЕДАКТИРОВАНИЕ:

Как уже упоминалось, я помещаю данные здесь:

В моем приложении. Xaml

<Application   
  x:Class="SilverlightApp.slate.App"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:mwa="clr-namespace:Microsoft.WebAnalytics;assembly=Microsoft.WebAnalytics"
             xmlns:ga="clr-namespace:Google.WebAnalytics;assembly=Google.WebAnalytics">


    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Assets/Styles.xaml"/>
                <ResourceDictionary Source="CustomControls.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>

    </Application.Resources>

    <Application.ApplicationLifetimeObjects>
        <mwa:WebAnalyticsService>
            <mwa:WebAnalyticsService.Services>
                <ga:GoogleAnalytics WebPropertyId="XXXXXXXXXXXXX" />
            </mwa:WebAnalyticsService.Services>
        </mwa:WebAnalyticsService>
    </Application.ApplicationLifetimeObjects>
</Application>

На главной странице. XAML под сеткой:

  <Button x:Name="btn_library_Icon" Margin="86,2,64,6" Style="{StaticResource menu_librarybuttonstyle}" FontFamily="/SilverlightApp.slate;component/Fonts/Fonts.zip#Segoe UI" FontSize="9.333" Click="btn_library_Icon_Click">
                <i:Interaction.Triggers>
                    <i:EventTrigger SourceName="btn_library_Icon" EventName="Click">
                        <mwab:TrackAction Category="Library Accessed"/>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
                <Image x:Name="image" Source="Assets/icon_menu_library.png" Stretch="Fill" Width="23" Height="23"/>
           </Button>

когда я запускаю это, это выдает мне ошибку как: "Добавление значения в коллекцию типа 'System.Windows.Interactivity.TriggerCollection' вызвало исключение."

Я что-то здесь скучаю?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2013

У меня была точно такая же проблема, только мой проект был Silverlight 5.

После долгих размышлений выяснилось, что проект ссылался на старую версию инструментария Silverlight, в частности версию 3.

Как только я изменил это на использование инструментария SL5, проблема исчезла.

Не объясняет истинную причину ошибки, но я надеюсь, что она все равно поможет.

0 голосов
/ 19 июля 2011

Кажется, что если у вас не работает браузер, вы должны включить что-то в ваш app.xaml, например, так:

<Application.ApplicationLifetimeObjects><mwa:WebAnalyticsService/></Application.ApplicationLifetimeObjects>

Кроме того, какую версию вы используете?Была ошибка, связанная с OOB, которая была исправлена ​​в выпуске 1.4.7:
http://msaf.codeplex.com/discussions/228657

РЕДАКТИРОВАТЬ: я пробовал это в небольшом тестовом приложении, и оно прекрасно работает для меня.Он выдает исключение при попытке установить google WebPropertyID, но это, вероятно, только потому, что у меня нет учетной записи Google Analytics.Во всяком случае, вот содержимое моего App.xaml:

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mwa="clr-namespace:Microsoft.WebAnalytics;assembly=Microsoft.WebAnalytics"
             xmlns:ga="clr-namespace:Google.WebAnalytics;assembly=Google.WebAnalytics"
             x:Class="SilverlightApplication22.App">

    <Application.ApplicationLifetimeObjects>
        <mwa:WebAnalyticsService>
            <mwa:WebAnalyticsService.Services>
                <ga:GoogleAnalytics WebPropertyId="UA-****-1" />
            </mwa:WebAnalyticsService.Services>
        </mwa:WebAnalyticsService>
    </Application.ApplicationLifetimeObjects>

    <Application.Resources>

    </Application.Resources>
</Application>

А вот снимок экрана из моего списка литературы.Ссылочная версия Google.WebAnalytics - 1.4.6.0, а Microsoft.WebAnalytics - 1.4.3.0.Версия фреймворка, который я установил, 1.4.10.0, как и у вас.Я думаю, что они не обновили все DLL с правильными номерами версий.

enter image description here

РЕДАКТИРОВАТЬ 2 : Я только что попробовал код кнопки, который вы отправили, и следующее прекрасно работает для меня.Я вижу, как запросы отправляются в googleanalytics в Fiddler, и он работает как вне браузера, так и в браузере.Я добавил ссылку на Microsoft.WebAnalytics.Behaviors, версия 1.4.6.0.

<UserControl x:Class="SilverlightApplication22.MainPage"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
             xmlns:mwab="clr-namespace:Microsoft.WebAnalytics.Behaviors;assembly=Microsoft.WebAnalytics.Behaviors"
             mc:Ignorable="d"
             d:DesignHeight="300"
             d:DesignWidth="400">

    <Grid x:Name="LayoutRoot"
          Background="White">
        <i:Interaction.Triggers>
            <i:EventTrigger SourceName="LayoutRoot"
                            EventName="Loaded">
                <mwab:TrackAction Category="App Loaded" />
            </i:EventTrigger>
        </i:Interaction.Triggers>

        <Button x:Name="Btn01"
                Click="Btn01_Click">
            <i:Interaction.Triggers>
                <i:EventTrigger SourceName="Btn01"
                                EventName="Click">
                    <mwab:TrackAction Category="Library Accessed" />
                </i:EventTrigger>
            </i:Interaction.Triggers>
            Test
        </Button>


    </Grid>
</UserControl>
...