私のWindowsストア(別名Windows 8)アプリケーションは、デフォルトのグリッドアプリケーションテンプレートを使用してアイテムを表示します。そこにあるアイテムテンプレートには、テキスト情報がオーバーレイされた画像が含まれています。アプリケーションのサイズを小さくするために、すべてのアイテムの画像を保存するのではなく、画像が存在するWebサーバーへの絶対パス(http)を使用してURIを保存します。画像のURIにバインドするように標準テンプレートを変更しました(これを正しく機能させるには、URIを文字列に変換する必要がありました)。アプリケーションを起動するたびに、すべての画像がダウンロードされ、画像コントロールによって自動的に表示されます。
私が今欲しいのは、一度ダウンロードされた画像を自動的に保存し、ダウンロードされた画像のURIをローカルストレージを指すものに変更することです。ここで私は2つの問題にぶつかります:
- から完全なItemTemplateをバインドすると、ImageOpenedイベントを発生させることができません。
StandardStyles.xaml
これは私のからのバインディングですGroupedItemsPage.xaml
:
<GridView
x:Name="itemGridView"
ItemTemplate="{StaticResource Standard250x250ItemTemplate}">
バインドされたテンプレートは、イベントを発生させるように変更されました(StandardStyles.xaml
):
<DataTemplate x:Key="Standard250x250ItemTemplate">
<Image Source="{Binding ImageUri}" ImageOpened="Image_ImageOpened"/>
</DataTemplate>
Image_ImageOpened
イベントハンドラーは分離コードファイル( `GroupedItemsPage.xaml.cs')で定義されていますが、起動することはありません。
private void Image_ImageOpened(object sender, RoutedEventArgs e)
{
}
- Imageフレームワーク要素のコンテンツをバイナリファイルとして保存する方法がわかりません。