Tôi có một lớp tùy chỉnh (để đơn giản hóa công cụ, tôi đã rút gọn các mã):Calling Phương pháp Awaitable trong tài sản accessor [Windows Store Apps/Metro Apps]
public class AlbumItem
{
public StorageFile AlbumThumbnail { get; set;}
}
Khi tôi liên kết này cho một 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>
nguồn Các Image
's được thiết lập để AlbumSource
, như tôi đã nghĩ để thực hiện AlbumSource
như một Get
tài sản -only:
public class AlbumItem
{
public StorageFile AlbumThumbnail { get; set;}
public BitmapImage AlbumSource
{
get
{
BitmapImage bmp = new BitmapImage();
bmp.SetSource(await AlbumThumbnail.OpenReadAsync());
return bmp;
}
}
}
Như dự kiến, tôi không thể sử dụng từ khóa await
trong phương thức truy cập, đồng thời tôi không thể khai báo tài sản là phương thức async
.
Ai đó có thể chỉ cho tôi đúng hướng không? Tôi có thể đang thử một số Converter
sau. Cảm ơn!
cảm ơn! tôi đã có ý tưởng, nhưng phương pháp của Flavien đã giải quyết được nhu cầu trước mắt của tôi. Tôi sẽ khám phá cách tiếp cận của bạn và xem liệu tôi có thể làm cho nó hoạt động sau này hay không. –
+1 Đây là câu trả lời đúng hơn. Không có lý do kỹ thuật nào mà các thuộc tính 'async' không thể tồn tại; đó là một quyết định thiết kế bởi vì một "bất động sản không đồng bộ" đi ngược lại khái niệm rất của một tài sản. –
Vâng, tôi đã thực hiện các thuộc tính của mình bằng cách sử dụng phương pháp này, và có, nó không làm hỏng giao diện người dùng của tôi! Cảm ơn nhiều! –