mam niestandardowej klasy (w celu uproszczenia rzeczy, mam okrojona kody):Wywołanie Awaitable Methods in Property Accessor [Windows Store apps/Metro aplikacje]
public class AlbumItem
{
public StorageFile AlbumThumbnail { get; set;}
}
Kiedy wiążę to ListView:
<ListView.ItemTemplate>
<DataTemplate>
<Grid Height="100" Background="#FFabe372">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Source="{Binding AlbumSource}" Margin="10" Stretch="Uniform"></Image>
<TextBlock Margin="20 5" Grid.Column="1" Style="{StaticResource AlbumListViewItemStyle}" Text="{Binding AlbumDisplayText}"></TextBlock>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
source Image
„s jest ustawiona na AlbumSource
, jak myślałem do wdrożenia AlbumSource
jako Get
własności -tylko:
public class AlbumItem
{
public StorageFile AlbumThumbnail { get; set;}
public BitmapImage AlbumSource
{
get
{
BitmapImage bmp = new BitmapImage();
bmp.SetSource(await AlbumThumbnail.OpenReadAsync());
return bmp;
}
}
}
Zgodnie z oczekiwaniami nie mogę użyć słowa kluczowego await
w metodzie akcesora, jednocześnie nie mogę zadeklarować kodu nieruchomości jako metody async
.
Czy ktoś może wskazać mi właściwy kierunek? Być może próbuję później. Dzięki!
dzięki! wpadłem na ten pomysł, ale metoda Flaviena rozwiązała moją natychmiastową potrzebę. Zbadam twoje podejście i zobaczę, czy uda mi się je zdobyć i pracować po tym. –
+1 To jest poprawniejsza odpowiedź. Nie ma żadnego technicznego powodu, że właściwości 'asynchroniczne' nie mogą istnieć; była to decyzja projektowa, ponieważ "własność asynchroniczna" jest sprzeczna z samą koncepcją własności. –
Tak, dotychczas wdrożyłem moje właściwości za pomocą tej metody, i tak, to nie dusi mojego interfejsu użytkownika! Wielkie dzięki! –