0

Windows ストレージからImageビューのコントロールに画像をバインドしています。コードは次のとおりです: (ImagesObservableCollection)

 // Loading images from storage
        foreach (var imagesVM in Images)
        {
            var img = new BitmapImage();
            var tmp = await ImageHelpers.LoadImageFromStorageAsync(
                imagesVM.name);
            if (tmp != null)
            {
                img.SetSource(tmp);
                imagesVM.Logo = img;
                RaisePropertyChanged(() => imagesVM.Logo);
                RaisePropertyChanged(() => Images);
            }
        }

LoadImageFromStorageAsync画像が見つからない場合、私のメソッドは null を返します。

私の問題は、画像がロードされたときにビューが更新されないことです.要素をドラッグアンドドロップすると、要素が更新され、画像が表示されます.ここに私のバインディングがあります:

 <StackPanel Orientation="Horizontal">
            <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}">
                <Image Source="{Binding Logo, Mode=TwoWay}" Stretch="UniformToFill" />
            </Border>
            <StackPanel Margin="20,0,0,0" HorizontalAlignment="Center" VerticalAlignment="Center">
                <TextBlock Text="{Binding Brand}"/>
                <TextBlock Text="{Binding Name}" Margin="0,5,0,0"/>
            </StackPanel>
        </StackPanel>

更新時に表示されるため、バインディングはうまく機能します(また、戻ってこのページを再度開いたときにも)

さらに奇妙なことに、私の画像が表示されることがあります...

推測はありますか?私はそれが何かだと思いますRaisePropertyChanged...

4

1 に答える 1

1

それはおそらくこれです:RaisePropertyChanged(() => imagesVM.Logo);

imagesVMタイプを変更して、が設定されたときに独自のプロパティ変更通知を発生させてみてくださいLogo

于 2013-01-03T03:31:22.553 に答える