不绑定MVVM中的View
本文关键字:View 中的 MVVM 绑定 | 更新日期: 2023-09-27 18:14:18
On HomePage.xaml
<Page.DataContext>
<ViewModel:GetTweetVM/>
</Page.DataContext>
Listview <!--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;
}
}
结果:
- 字符串t将从statusList->"fadsvs..........获取值"
- Listview没有数据
我不知道哪里错了?
如果我理解正确的话,你有从ViewModel到View的通知问题
尝试下面
public ObservableCollection<Status> statusList { get; set; }
ObservableCollection将确保在添加任何项时通知UI。
关于ObservableCollection的更多信息
.net中ObservableCollection的作用是什么?
绝对应该替换:
public List<Status> statusList { get; set; }
:
public ObservableCollection<Status> statusList { get; set; }
当你使用MVVM和数据绑定时,你应该使用ObservableCollection,这样你就可以在列表更改时获得UI通知。注意,当list中的一些对象属性只改变了list本身(元素被添加/删除或移动到list中)时,UI通知不会被触发。这是因为ObservableCollection触发事件只有当集合被改变而不是对象属性在列表中。
希望有所帮助