在HomePage.xaml
<Page.DataContext>
<ViewModel:GetTweetVM/>
</Page.DataContext>
列表视图
<!--Content-->
<ListView x:Name="lstHome"
Grid.Row="2"
Margin="5"
ItemInvoked="lstHome_ItemInvoked"
ContainerContentChanging="lstHome_ContainerContentChanging" ItemsSource="{Binding statusList}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Image x:Name="imgThumbnailUser" Source="{Binding}"></Image>
<StackPanel Orientation="Vertical" Grid.Column="1">
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="txtName" Text="{Binding Text}"></TextBlock>
<TextBlock x:Name="txtUsername" Text="{Binding User.Name}" Foreground="#CCCCCC"></TextBlock>
</StackPanel>
<TextBlock x:Name="txtContentMessage" Text="{Binding User.Categories.Name}" TextTrimming="CharacterEllipsis" Foreground="#CCCCCC"></TextBlock>
</StackPanel>
<TextBlock x:Name="txtDateTime" Text="{Binding}" Foreground="#CCCCCC"></TextBlock>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</control:ListView>
在GetTweetVM中
public class GetTweetVM
{
TwitterContext twitter;
public List<Status> statusList { get; set; }
public GetTweetVM()
{
statusList = new List<Status>();
if (SharedState.Authorizer != null)
{
twitter = new TwitterContext(SharedState.Authorizer);
GetTweet();
}
else
return;
}
public async void GetTweet()
{
//base.GetTweet();
var objectStatus = await (from status in twitter.Status
where status.Type == LinqToTwitter.StatusType.Home && status.Count==10
select status).ToListAsync();
foreach(var item in objectStatus)
{
statusList.Add(item);
}
string t = statusList[0].Text;
}
}
结果:
我不知道哪里出错了?请帮我解决。
答案 0 :(得分:1)
如果我理解正确,您会从ViewModel到View
发出通知问题尝试以下
public ObservableCollection<Status> statusList { get; set; }
ObservableCollection将确保在添加任何项目时通知UI。
有关ObservableCollection的更多信息
What is the use of ObservableCollection in .net?
希望这有帮助。
答案 1 :(得分:0)
当然你应该替换:
public List<Status> statusList { get; set; }
使用:
public ObservableCollection<Status> statusList { get; set; }
当您使用MVVM和数据绑定时,您应该使用ObservableCollection,以便在更改列表时获得UI通知。请注意,当列表中的某些对象属性仅更改了列表本身(已在列表中添加/删除或移动元素)时,将不会触发UI通知。这是因为ObservableCollection仅在未更改集合时触发事件,而在列表中触发对象属性。
希望有所帮助