WinRT アプリには、いくつかの写真と 1 つの画像 myImage を含む FlipView myFlipView が 1 つあります。myFlipView のイベント SelectionChanged には、次のメソッドがあります。
async private void myFlipView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (myFlipView == null) return;
Uri newUri = new Uri("ms-appx://" + (((BitmapImage)(((Image)(((ContentControl)(myFlipView.SelectedItem)).Content)).Source)).UriSource.AbsolutePath));
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(newUri);
WriteableBitmap wb = new WriteableBitmap(1, 1);
if (file != null)
{
using (IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
{
await wb.SetSourceAsync(fileStream);
}
}
wb = ModifyPicture(wb);
myImage.Source = wb;
}
要約すると、myFlipView で現在の画像の uri を見つけ、その画像を myImage に設定しますが、ModifyPicture でいくつかの変更が定義されています。タブレットでは問題なく動作しますが、マウスを搭載したコンピューターではエラーが 1 つあります。FlipView に添付された矢印を非常に速くクリックすると、myImage に間違った画像が表示されます。たとえば、myFlipView に 10 枚の写真 (p1、p2、...、p10) があり、現在 p1 が選択されている場合、myImage で p2 に変更すると、p2 も表示されます。しかし、FlipView で時々非常に速くクリックすると、たとえば p9 と myImage p8 があります。メソッドが何度も呼び出されていることに関連していると思いますが、修正方法がわかりません。事前に助けてくれてありがとう:)