• wpf 简单实验 数据更新 列表更新


    1.概要

    1.1 需求

    一个列表提供添加修改删除的功能,添加和修改的内容都来自一个输入框

    1.2 要点

    • DisplayMemberPath="Zhi"
    • 列表.ItemsSource = datalist;
    • (列表.SelectedItem != null)
    • (列表.SelectedItem as A).Zhi = 内容.Text;
    • datalist.Remove((列表.SelectedItem as A)!);
    • public String? Zhi { get { return _zhi; } set { _zhi = value; OnPropertyChanged(nameof(Zhi)); } }
    • PropertyChanged.Invoke(this, new PropertyChangedEventArgs(name));

    2.代码

    2.1 xaml

    1. <Window x:Class="WpfApp5.MainWindow"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    5. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    6. xmlns:local="clr-namespace:WpfApp5"
    7. mc:Ignorable="d"
    8. Title="MainWindow" Height="450" Width="800">
    9. <StackPanel>
    10. <TextBox Name="内容" ></TextBox>
    11. <Button Name="Add" Content="添加" Click="Add_Click" />
    12. <Button Name="Update" Content="修改" Click="Update_Click" />
    13. <Button Name="Delete" Content="删除" Click="Delete_Click" />
    14. <ListBox Name="列表" DisplayMemberPath="Zhi" Height="100"></ListBox>
    15. </StackPanel>
    16. </Window>

    2.2 代码

    1. using System.Collections.ObjectModel;
    2. using System.ComponentModel;
    3. using System.Text;
    4. using System.Windows;
    5. using System.Windows.Controls;
    6. using System.Windows.Data;
    7. using System.Windows.Documents;
    8. using System.Windows.Input;
    9. using System.Windows.Media;
    10. using System.Windows.Media.Imaging;
    11. using System.Windows.Navigation;
    12. using System.Windows.Shapes;
    13. namespace WpfApp5
    14. {
    15. /// <summary>
    16. /// Interaction logic for MainWindow.xaml
    17. /// 连表数据绑定
    18. /// </summary>
    19. public partial class MainWindow : Window
    20. {
    21. ObservableCollection<A> datalist = new ObservableCollection<A>();
    22. //List<A> datalist = new List<A>();
    23. public MainWindow()
    24. {
    25. InitializeComponent();
    26. init();
    27. }
    28. private void init()
    29. {
    30. datalist.Add(new A { Zhi = "1" });
    31. datalist.Add(new A { Zhi = "2" });
    32. datalist.Add(new A { Zhi = "3" });
    33. //列表.DataContext = datalist;
    34. 列表.ItemsSource = datalist;
    35. }
    36. private void Add_Click(object sender, RoutedEventArgs e)
    37. {
    38. datalist.Add(new A { Zhi = 内容.Text });
    39. }
    40. private void Update_Click(object sender, RoutedEventArgs e)
    41. {
    42. if (列表.SelectedItem != null)
    43. {
    44. (列表.SelectedItem as A).Zhi = 内容.Text;
    45. }
    46. }
    47. private void Delete_Click(object sender, RoutedEventArgs e)
    48. {
    49. if (列表.SelectedItem != null)
    50. {
    51. datalist.Remove((列表.SelectedItem as A)!);
    52. }
    53. }
    54. }
    55. class A:INotifyPropertyChanged
    56. {
    57. private String? _zhi;
    58. public String? Zhi { get { return _zhi; } set { _zhi = value; OnPropertyChanged(nameof(Zhi)); } }
    59. public event PropertyChangedEventHandler? PropertyChanged;
    60. private void OnPropertyChanged(String name)
    61. {
    62. if (PropertyChanged != null)
    63. {
    64. PropertyChanged.Invoke(this, new PropertyChangedEventArgs(name));
    65. }
    66. }
    67. }
    68. }

    3.运行结果

  • 相关阅读:
    你已经应用了哪种服务注册和发现的模式呢?
    IDM安装教程
    掌握Go语言:探索Go语言中的循环奇妙世界,从基础到实战(13)
    使用UiPath和AA构建的解决方案 1. 机器人过程自动化入门
    Java实用的DateUtils时间工具类介绍
    Redis:java和SpringBoot中使用Redis
    都已过35+程序员高危高龄,我为什么还要学习python?
    大数据Flink(八十八):Interval Join(时间区间 Join)
    关于C++11静态成员变量的类内初始化
    解决方案 | 如何构建市政综合管廊安全运行监测系统?
  • 原文地址:https://blog.csdn.net/xie__jin__cheng/article/details/136287956