1

C# XAML Windows 8 プロジェクトがあります。

HubPage.xaml には、GridView名前付きのHubGridViewが含まれています。HubGridViewは、 HubItemTemplateSelectorItemTemplateSelectorという名前のカスタムを使用します。HubItemTemplateSelectorは、HubResourceDictionary.xamlという名前のファイルで定義された名前付きAdDataTemplateを選択します。AdDataTemplateには、 HubAdControlという名前の要素が含まれています。DataTemplateResourceDictionaryAdControl

HubAdControlsErrorOccurredイベント ハンドラーをコード ビハインドで定義されたメソッドに設定できるようにする必要があります。どうすればこれを達成できますか?

HubPage.xaml:

<GridView x:Name="HubGridView" ItemTemplateSelector="{StaticResource HubItemTemplateSelector}" />

HubResourceDictionary.xaml:

<DataTemplate x:Key="AdDataTemplate">
    <Grid>
        <UI:AdControl x:Name="HubAdControl" />
    </Grid>
</DataTemplate>
4

2 に答える 2

0

思ったとおりに機能します。

<Grid.Resources>
    <DataTemplate x:Key="MyTemplate">
        <TextBlock Loaded="TextBlock_Loaded_1">Hello World</TextBlock>
    </DataTemplate>
</Grid.Resources>

<GridView ItemTemplate="{StaticResource MyTemplate}" />

そこでの私のサンプルでは、​​TextBoxがレンダリングされるたびにLoadedが発生します。これは、GridViewのItemsSourceにバインドされたすべてのアイテムに対して発生します。OnErrorなどの別のイベントを同じように簡単に使用できます。リソース内にあるかどうかは関係ありません。それがリピーターへの結合の結果であるかどうかは問題ではありません。

わかる?

于 2012-10-05T22:45:53.923 に答える
0

あなたはおそらくこれまでにこれを理解していましたが、私は同じ問題を抱えていました.

ジェリーの答えを 100% 理解できたかどうかはわかりません。AdControl を次のようなリソース ファイルに入れてみました。

Templates.xaml

<DataTemplate x:Key="AdTemplate1">
        <StackPanel Margin="70,40,70,140" HorizontalAlignment="Center" VerticalAlignment="Center">
            <ui:AdControl 
                ApplicationId="d25517cb-12d4-4699-8bdc-52040c712cab" 
                AdUnitId="10043030" HorizontalAlignment="Center" 
                Height="600" Margin="0,0,0,0" 
                VerticalAlignment="Center" Width="300" ErrorOccurred="OnAdError" />
        </StackPanel>
</DataTemplate>

次に、xaml で DataTemplateSelector を使用して DataTemplate を参照しました。DataTemplate を使用した xaml コード ビハインドで OnAdError イベント ハンドラーを作成してみました。ランタイム例外が発生しました。リソース テンプレートには OnAdError メソッドが必要でした。

XAML アプリや Windows 8(.1) アプリの専門家ではないことは確かです。しかし、私がやったのは、コード ビハインドで OnAdError ハンドラーと共にコントロールを使用して UserContol を作成し、リソース ファイルでこの UserControl を参照することでした。現在、すべてが期待どおりに機能しており、このユーザー コントロールですべての広告ロジックを収集できるというボーナスを得ました。次のステップは、AdUnitId を動的に変更することです:)

于 2014-05-03T14:41:55.720 に答える