我正在做一个应用程序,我有布局动态生成的基础上,一个名单。
<StackLayout>
<CollectionView x:Name="taskList">
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="models:Task">
<VerticalStackLayout Margin="15">
<Entry Text="{Binding name}" IsReadOnly="True" />
<Entry Text="{Binding departmentsString}" IsReadOnly="True"/>
<HorizontalStackLayout>
<Entry Text="{Binding status}" IsReadOnly="True"/>
<Entry Text="{Binding deadline}" IsReadOnly="True" />
<Entry Text="{Binding author.fullName}" IsReadOnly="True"/>
</HorizontalStackLayout>
<Entry Text="{Binding description}" IsReadOnly="True" />
</VerticalStackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</StackLayout>
列表是这样绑定的:
taskList.ItemsSource = company.tasks;
每当向列表中添加新项目时,我都要刷新此列表。
我尝试将列表重新绑定到ItemsSource
,但没有成功:
taskList.ItemsSource = company.tasks;
我该怎么做呢?我能刷新视图,让它再次生成所有内容吗?
2条答案
按热度按时间f3temu5u1#
您应该绑定一个自定义集合,而不是从代码隐藏中分配
ItemsSource
,这样做会更容易,并将UI和逻辑解耦。你可以这样做:
你的xaml应该是这样的:* (注意绑定而不是名称)*
如果要向集合中添加项,只需使用
Tasks
属性:ps:我不会把一个数据对象叫做'Task',也不会给它一个更好的描述。TaskInfo/CompanyTask。
tquggr8v2#
您应该使用
IEnumerable
集合来发送ItemsSource的属性更改通知(例如ObservableCollection),然后简单地添加到基础集合中。微软参考