mvvm - UWP ObservableCollection 通知 View 发生变化
问题描述
我想创建一个带有页面的 UWP 应用程序,该页面显示项目列表,这些项目列在 ObservableCollection 中。当我从列表中添加或删除一个项目时,它也应该从 GUI 的视图中添加或删除。或者当我更改项目的属性时,它也应该在 GUI 的视图中更改。我尝试了这个平台上另一个页面的代码,但它不起作用。
通知使用 ObservableCollection 作为 ItemsSource 的视图(ListView 或 TreeView)关于 ObservableCollection 中的更改(新项目、删除的项目、项目内的值已更改)需要什么?NotifiyPropertyChanged(<name of ObservableCollection>) 在这种情况下不起作用,但适用于简单的字符串成员。谁能给我一个来自模型、视图和视图模型的小型工作示例代码?
亲切的问候,沃尔夫冈
解决方案
谁能给我一个来自模型、视图和视图模型的小型工作示例代码?
当然,请检查以下代码。并且可以在添加或删除项目时ObservableCollection
通知 UI 更改。NotifiyPropertyChanged
public sealed partial class MainPage : Page
{
private ObservableCollection<Book> Books { get; set; } = new ObservableCollection<Book>();
public MainPage()
{
this.InitializeComponent();
GetData();
}
private void GetData()
{
for (int i = 0; i < 25; i++)
{
var book = new Book { Name = $" Book{i}", Author = $"Author{i}" };
Books.Add(book);
}
MyListView.ItemsSource = Books;
}
private int count;
private void AddClick(object sender, RoutedEventArgs e)
{
count++;
Books.Insert(0, new Book { Name = $"NewBook{count}", Author = $"NewAuthor{count}" });
}
private void DelClick(object sender, RoutedEventArgs e)
{
if (Books.Count != 0)
{
Books.RemoveAt(0);
}
}
}
public class Book
{
public string Name { get; set; }
public string Author { get; set; }
}
Xaml
<Page.BottomAppBar>
<CommandBar>
<AppBarButton
Click="AddClick"
Icon="Add"
Label="Add"
/>
<AppBarButton
Click="DelClick"
Icon="Delete"
Label="Delete"
/>
</CommandBar>
</Page.BottomAppBar>
<Grid>
<ListView x:Name="MyListView">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Margin="23,0,0,0" Text="{Binding Author}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
推荐阅读
- sql-server - 如何将本地 sql server 中的数据导入 Azure SQL Server
- ruby-on-rails - 我应该如何从模块返回哈希?
- javascript - 通过 javascript 为 chrome 浏览器阻止警报或任何自定义弹出窗口
- mysql - 多个主键的更快选择查询
- kubernetes - Kubernetes 是否缓存 docker-registry 机密?
- reporting-services - 在 SSRS 中仅允许标准订阅
- amazon-web-services - 无法验证 AWS 中 *.*.compute 内部主机名的证书
- powershell - PFX / 软件证书无法正常运行
- matlab - 为什么这些逻辑表达式会在 matlab 中生成这些答案?
- javascript - JsPDF在每个新页面上重复第一行