积极答复者
怎样给listview异步绑定数据?

问题
-
public MainPage()
private async void AddResource()
{
this.InitializeComponent();
AddResource();
}
{
groupedItemsViewSource.Source = await ReadSMSListBySource();
} private async Task<ObservableCollection<SMSData>> ReadSMSListBySource()
{
ObservableCollection<SMSData> ItemGroups=new ObservableCollection<SMSData>();
if (device == null)
device = await SmsDevice.GetDefaultAsync();
if (device != null)
{
for (uint i = 1; i <= device.MessageStore.MaxMessages; i++)
{
try
{
ISmsMessage msg = await device.MessageStore.GetMessageAsync(i);
ISmsTextMessage textMsg = msg as ISmsTextMessage;
if (textMsg != null)
{
SMSData smsdata = new SMSData();
smsdata.id = textMsg.Id.ToString();
smsdata.From= textMsg.From;
smsdata.SMSDate = textMsg.Timestamp.DateTime.ToString();
smsdata.Content = textMsg.Body;
ItemGroups.Add(smsdata);
}
}
catch (Exception ex)
{
}
}
}
else
{
}
return ItemGroups;
}xaml:
<ListView Name="messageList" ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}" FontSize="24" Grid.Column="1" HorizontalAlignment="Left" Margin="0,0,0,0" Grid.Row="1" VerticalAlignment="Top" Width="1180" Foreground="Black">
<ListView.Background>
<SolidColorBrush Color="#C9DAEE" Opacity="0.8"/>
</ListView.Background>
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding From}" Width="250"/>
<TextBlock Text="{Binding SMSDate}" Width="250"/>
<TextBlock Text="{Binding Content}" TextWrapping="Wrap" Width="680"/>
<Line Fill="White"></Line>
</StackPanel>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
答案
-
你没有使用分组,而只是将ItemGroups中元素一次展现,所以你不需要 GroupStyle ,而只需要 定义 ListView.ItemTemplate 即可:
<ListView Name="messageList" ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}" FontSize="24" Grid.Column="1" HorizontalAlignment="Left" Margin="0,0,0,0" Grid.Row="1" VerticalAlignment="Top" Width="1180" Foreground="Black"> <ListView.Background> <SolidColorBrush Color="#C9DAEE" Opacity="0.8"/> </ListView.Background> <ListView.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding From}" Width="250"/> <TextBlock Text="{Binding SMSDate}" Width="250"/> <TextBlock Text="{Binding Content}" TextWrapping="Wrap" Width="680"/> <Line Fill="White"></Line> </StackPanel> </DataTemplate> </ListView.ItemTemplate> </ListView>
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
- 已建议为答案 清风梧桐 2012年8月22日 8:51
- 已标记为答案 Jie BaoModerator 2012年8月27日 3:47
全部回复
-
你没有使用分组,而只是将ItemGroups中元素一次展现,所以你不需要 GroupStyle ,而只需要 定义 ListView.ItemTemplate 即可:
<ListView Name="messageList" ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}" FontSize="24" Grid.Column="1" HorizontalAlignment="Left" Margin="0,0,0,0" Grid.Row="1" VerticalAlignment="Top" Width="1180" Foreground="Black"> <ListView.Background> <SolidColorBrush Color="#C9DAEE" Opacity="0.8"/> </ListView.Background> <ListView.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding From}" Width="250"/> <TextBlock Text="{Binding SMSDate}" Width="250"/> <TextBlock Text="{Binding Content}" TextWrapping="Wrap" Width="680"/> <Line Fill="White"></Line> </StackPanel> </DataTemplate> </ListView.ItemTemplate> </ListView>
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
- 已建议为答案 清风梧桐 2012年8月22日 8:51
- 已标记为答案 Jie BaoModerator 2012年8月27日 3:47